Martin Jambor [Thu, 11 Mar 2010 22:27:26 +0000 (23:27 +0100)]
re PR tree-optimization/43257 (IPA-SRA changes DECL_ASSEMBLER_NAME)
2010-03-11 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/43257
* tree.c (assign_assembler_name_if_neeeded): New function.
(free_lang_data_in_cgraph): Assembler name assignment moved to the
above new function.
* tree.h (assign_assembler_name_if_neeeded): Declare.
* cgraphunit.c (cgraph_analyze_function): Create an assembler name for
the function if needed.
Andreas Krebbel [Thu, 11 Mar 2010 13:51:00 +0000 (13:51 +0000)]
re PR tree-optimization/43280 (gcc4.5 -m32 -O2: misoptimizes sha256!)
2010-03-11 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
PR tree-optimization/43280
* tree-ssa-math-opts.c (find_bswap_1): Modify symbolic number generation.
Move calculation of size out of the if branch.
(find_bswap): Modify compare number generation.
2010-03-11 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* gcc.dg/optimize-bswapdi-1.c: Add OpenSSL bswap variant.
* gcc.dg/pr43280.c: New testcase.
Richard Guenther [Thu, 11 Mar 2010 13:13:53 +0000 (13:13 +0000)]
re PR lto/43200 ([LTO] tree check: expected array_type, have pointer_type in array_ref_low_bound)
2010-03-11 Richard Guenther <rguenther@suse.de>
PR lto/43200
* lto-streamer-in.c (maybe_fixup_decls): Simplify.
(input_gimple_stmt): Fixup handled component types during
operand read. Also fix up decls in ADDR_EXPRs.
* gcc.dg/lto/20100227-1_0.c: New testcase.
* gcc.dg/lto/20100227-1_1.c: Likewise.
Eric Botcazou [Wed, 10 Mar 2010 23:25:37 +0000 (23:25 +0000)]
sol2-bi.h (CC1_SPEC): Default to -mcpu=v9 for -m32.
* config/sparc/sol2-bi.h (CC1_SPEC): Default to -mcpu=v9 for -m32.
* config/sparc/t-sol2-64 (MULTILIB_DIRNAMES): Use sparcv8plus.
ada/
* gcc-interface/Makefile.in (SPARC/Solaris): Use sparcv8plus.
Jan Hubicka [Wed, 10 Mar 2010 19:33:37 +0000 (19:33 +0000)]
re PR c/43288 (ICE in function_and_variable_visibility, at ipa.c:415)
PR c/43288
* ipa.c (function_and_variable_visibility) Normalize COMMON bits.
* varasm.c (get_variable_section): Don't do that here...
(make_decl_rtl): ... and here.
(do_assemble_alias): Produce decl RTL.
(assemble_alias): Likewise.
Jakub Jelinek [Wed, 10 Mar 2010 18:17:10 +0000 (19:17 +0100)]
re PR debug/43290 (ICE in dwarf2out_frame_debug_expr)
PR debug/43290
* reg-notes.def (REG_CFA_SET_VDRAP): New note.
* dwarf2out.c (dwarf2out_frame_debug_expr): Remove rule 20 - setting
of fde->vdrap_reg.
(dwarf2out_frame_debug): Handle REG_CFA_SET_VDRAP note.
(based_loc_descr): Only express drap or vdrap regno based expressions
using DW_OP_fbreg when not optimizing.
* config/i386/i386.c (ix86_get_drap_rtx): When not optimizing,
make the vDRAP = DRAP assignment RTX_FRAME_RELATED_P and add
REG_CFA_SET_VDRAP note.
PR debug/36728
* gcc.dg/guality/pr36728-1.c: New test.
* gcc.dg/guality/pr36728-2.c: New test.
re PR tree-optimization/43236 (-ftree-loop-distribution produces wrong code in reload1.c:delete_output_reload(), bootstrap fails)
PR tree-optimization/43236
* tree-loop-distribution.c (generate_memset_zero): Fix off-by-one
error in calculation of base address in reverse iteration case.
(generate_builtin): Take number of latch executions if the statement
is in the latch.
* tree-eh.c: Include pointer-set.h.
(lower_eh_dispatch): Filter out duplicate case labels and
remove the unneeded edge when the label is unused. Return
true when some edges are removed.
(execute_lower_eh_dispatch): When any lowering resulted in
removing an edge, also delete unreachable blocks.
Jakub Jelinek [Tue, 9 Mar 2010 20:11:53 +0000 (21:11 +0100)]
re PR debug/43293 (Invalid unwind info for i?86 -fpic)
PR debug/43293
* config/i386/t-i386 (i386.o): Depend on debug.h and dwarf2out.h.
* config/i386/i386.c: Include debug.h and dwarf2out.h.
(ix86_file_end): If dwarf2out_do_cfi_asm (), emit .cfi_startproc
and .cfi_endproc around the pic thunks.
(output_set_got): For TARGET_DEEP_BRANCH_PREDICTION pic, ensure
all queued unwind info register saves are saved before the call.
For !TARGET_DEEP_BRANCH_PREDICTION pic, ensure the call is
considered as sp-=4 for unwind info and the pop as sp+=4 which
also clobbers dest, but doesn't actually restore it.
Jakub Jelinek [Tue, 9 Mar 2010 18:53:38 +0000 (19:53 +0100)]
re PR bootstrap/43299 (Subversion id 157264 breaks powerpc 64-bit bootstraps)
PR debug/43299
* var-tracking.c (adjust_sets): New function.
(count_with_sets, add_with_sets): Use it.
(get_adjusted_src): New inline function.
(add_stores): Use it.
Jakub Jelinek [Tue, 9 Mar 2010 18:50:40 +0000 (19:50 +0100)]
re PR debug/43293 (Invalid unwind info for i?86 -fpic)
PR debug/43293
* config/i386/t-i386 (i386.o): Depend on debug.h and dwarf2out.h.
* config/i386/i386.c: Include debug.h and dwarf2out.h.
(ix86_file_end): If dwarf2out_do_cfi_asm (), emit .cfi_startproc
and .cfi_endproc around the pic thunks.
(output_set_got): For TARGET_DEEP_BRANCH_PREDICTION pic, ensure
all queued unwind info register saves are saved before the call.
For !TARGET_DEEP_BRANCH_PREDICTION pic, ensure the call is
considered as sp-=4 for unwind info and the pop as sp+=4 which
also clobbers dest, but doesn't actually restore it.
Jerry DeLisle [Tue, 9 Mar 2010 14:41:17 +0000 (14:41 +0000)]
re PR fortran/43265 (No EOF condition if reading with '(x)' from an empty file)
2010-03-09 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/43265
* io/read.c: Include fbuf.h and unix.h to enable lower level I/O for
read_x. (read_x): Replace the use of read_sf with equivalent lower level
I/O, eliminating unneeded code and handling EOF and EOR conditions.
* io/io.h: Revise prototype for read_sf.
* io/transfer.c (read_sf): Delete no_error parameter and all uses of it.
(read_block_form): Likewise.
(next_record_r): Delete wrong code call to hit_eof.
* graphite-clast-to-gimple.c (clast_to_gcc_expression): Also
handle conversions from pointer to integers.
(gcc_type_for_cloog_iv): Choose the smalles signed integer as an
induction variable, to be able to work with code generated by
CLooG.
* graphite-sese-to-poly.c (scop_ivs_can_be_represented): New.
(build_poly_scop): Bail out if we cannot codegen a loop.
* gcc/graphite-clast-to-gimple.c (clast_to_gcc_expression): Also
handle conversions from pointer to integers.
(gcc_type_for_cloog_iv): Choose the smalles signed integer as an
induction variable, to be able to work with code generated by
CLooG.
* gcc/graphite-sese-to-poly.c (scop_ivs_can_be_represented): New.
(build_poly_scop): Bail out if we cannot codegen a loop.
* gcc/testsuite/gcc.dg/graphite/id-18.c: New.
* gcc/testsuite/gcc.dg/graphite/run-id-pr42644.c: New.
* libgomp/testsuite/libgomp.graphite/force-parallel-1.c: Adjust.
* libgomp/testsuite/libgomp.graphite/force-parallel-2.c: Adjust.
Sebastian Pop [Mon, 8 Mar 2010 17:49:22 +0000 (17:49 +0000)]
Fold convert SSA_NAMEs in the scalar expander.
2010-03-04 Sebastian Pop <sebastian.pop@amd.com>
* sese.c (expand_scalar_variables_ssa_name): Add new argument for type.
Call fold_convert on all the returned values.
(expand_scalar_variables_expr): Pass to expand_scalar_variables_ssa_name
the type of the resulting expression.
Jakub Jelinek [Mon, 8 Mar 2010 13:33:31 +0000 (14:33 +0100)]
var-tracking.c (remove_cselib_value_chains): Define only for ENABLE_CHECKING.
* var-tracking.c (remove_cselib_value_chains): Define only for
ENABLE_CHECKING.
(dataflow_set_preserve_mem_locs, dataflow_set_remove_mem_locs,
delete_slot_part, emit_notes_for_differences_1): Don't call
remove_cselib_value_chains here.
(set_slot_part, emit_notes_for_differences_2): Don't call
add_cselib_value_chains here.
(preserved_values): New vector.
(preserve_value): New function.
(add_uses, add_stores, vt_add_function_parameters): Use it
instead of cselib_preserve_value.
(changed_values_stack): New vector.
(check_changed_vars_0): New function.
(check_changed_vars_1, check_changed_vars_2): Use it.
(emit_notes_for_changes): Call set_dv_changed (*, false) on all
changed_values_stack VALUEs.
(vt_emit_notes): For all preserved_values call
add_cselib_value_chains. If ENABLE_CHECKING call
remove_cselib_value_chains before verifying value_chains is empty.
Initialize and free changed_values_stack.
(vt_initialize): Initialize preserved_values.
(vt_finalize): Free preserved_values.
Martin Jambor [Mon, 8 Mar 2010 11:00:07 +0000 (12:00 +0100)]
ipa-prop.h (struct ipa_param_descriptor): Removed the called field.
2010-03-08 Martin Jambor <mjambor@suse.cz>
* ipa-prop.h (struct ipa_param_descriptor): Removed the called field.
(ipa_is_param_called): Removed.
* ipa-prop.c (ipa_note_param_call): Do not set the called flag.
(ipa_print_node_params): Do not print the called flag.
(ipa_write_node_info): Do not stream the called flag.
(ipa_read_node_info): Likewise.
Janus Weil [Mon, 8 Mar 2010 09:35:04 +0000 (10:35 +0100)]
re PR fortran/43256 ([OOP] TBP with missing optional arg)
2010-03-08 Janus Weil <janus@gcc.gnu.org>
PR fortran/43256
* resolve.c (resolve_compcall): Don't set 'value.function.name' here
for TBPs, otherwise they will not be resolved properly.
(resolve_function): Use 'value.function.esym' instead of
'value.function.name' to check if we're dealing with a TBP.
(check_class_members): Set correct type of passed object for all TBPs,
not only generic ones, except if the type is abstract.
Kai Tietz [Mon, 8 Mar 2010 08:01:55 +0000 (09:01 +0100)]
libgfortran.h (_POSIX): Define if __MINGW32__ is defined.
2010-03-08 Kai TIetz <kai.tietz@onevision.com>
PR/42950
* libgfortran.h (_POSIX): Define if __MINGW32__ is defined.
(gfc_printf): Define to gnu_printf for __MINGW32__ case,
otherwise to __printf__.
(gfc_strtof,gfc_strtod,gfc_strtold): Define for mingw case
to POSIX compatible converter functions.
(runtime_error): Use instead gfc_printf as formatter
attribute name.
(runtime_error_at): Likewise.
(runtime_warning_at): Likewise.
(st_printf): Likewise.
* intrinsics/date_and_time.c (localtime_r): Undefine
possible defined macro.
(gmtime_r): Likewise.
* io/read.c (convert_real): Use gfc_strtof, gfc_strtod,
and gfc_strtold.
Jakub Jelinek [Sun, 7 Mar 2010 15:44:11 +0000 (16:44 +0100)]
re PR debug/43176 (var-tracking fails to notice a value change)
PR debug/43176
* Makefile.in (var-tracking.o): Depend on pointer-set.h.
* cselib.c (struct expand_value_data): Add dummy field.
(cselib_expand_value_rtx, cselib_expand_value_rtx_cb): Initialize
dummy to false.
(cselib_dummy_expand_value_rtx_cb): New function.
(cselib_expand_value_rtx_1): If evd->dummy is true, don't allocate
any rtl.
* cselib.h (cselib_dummy_expand_value_rtx_cb): New prototype.
* var-tracking.c: Include pointer-set.h.
(variable): Change n_var_parts to char from int. Add
cur_loc_changed and in_changed_variables fields.
(variable_canonicalize): Remove.
(shared_var_p): New inline function.
(unshare_variable): Maintain cur_loc_changed and
in_changed_variables fields. If var was in changed_variables,
replace it there with new_var. Just copy cur_loc instead of
resetting it to something else.
(variable_union): Don't recompute cur_loc. Use shared_var_p.
(dataflow_set_union): Don't call variable_canonicalize.
(loc_cmp): If both x and y are DEBUG_EXPRs, compare uids
of their DEBUG_EXPR_TREE_DECLs.
(canonicalize_loc_order_check): Verify that cur_loc is NULL
and in_changed_variables and cur_loc_changed is false.
(variable_merge_over_cur): Clear cur_loc, in_changed_variables
and cur_loc_changed. Don't update cur_loc here.
(variable_merge_over_src): Don't call variable_canonicalize.
(dataflow_set_preserve_mem_locs): Use shared_var_p. When
removing loc that is equal to cur_loc, clear cur_loc,
set cur_loc_changed and ensure variable_was_changed is called.
(dataflow_set_remove_mem_locs): Use shared_var_p. Only
compare pointers in cur_loc check, if it is equal to loc,
clear cur_loc and set cur_loc_changed. Don't recompute cur_loc here.
(variable_different_p): Remove compare_current_location argument,
don't compare cur_loc.
(dataflow_set_different_1): Adjust variable_different_p caller.
(variable_was_changed): If dv had some var in changed_variables
already, reset in_changed_variables flag for it and propagate
cur_loc_changed over to the new variable. On empty var
always set cur_loc_changed. Set in_changed_variables on whatever
var is added to changed_variables.
(set_slot_part): Clear cur_loc_changed and in_changed_variables.
Use shared_var_p. When removing loc that is equal to cur_loc,
clear cur_loc and set cur_loc_changed. If cur_loc is NULL at the
end, don't set it to something else, just call variable_was_changed.
(delete_slot_part): Use shared_var_p. When cur_loc equals to
loc being removed, clear cur_loc and set cur_loc_changed.
Set cur_loc_changed if all locations have been removed.
(struct expand_loc_callback_data): New type.
(vt_expand_loc_callback): Add dummy mode in which no rtxes are
allocated. Always create SUBREGs if simplify_subreg failed.
Prefer to use cur_loc, when that fails and still in
changed_variables (and seen first time) recompute it. Set
cur_loc_changed of variables which had to change cur_loc and
compute elcd->cur_loc_changed if any of the subexpressions used
had to change cur_loc.
(vt_expand_loc): Adjust to pass arguments in
expand_loc_callback_data structure.
(vt_expand_loc_dummy): New function.
(emitted_notes): New variable.
(emit_note_insn_var_location): For VALUEs and DEBUG_EXPR_DECLs
that weren't used for any other decl in current
emit_notes_for_changes call call vt_expand_loc_dummy to update
cur_loc. For -fno-var-tracking-assignments, set cur_loc to
first loc_chain location if NULL before. Always use just
cur_loc instead of first loc_chain location. When cur_loc_changed
is false, when not --enable-checking=rtl just don't emit any note.
When rtl checking, compute the note and assert it is the same
as previous note. Clear cur_loc_changed and in_changed_variables
at the end before removing from changed_variables.
(check_changed_vars_3): New function.
(emit_notes_for_changes): Traverse changed_vars to call
check_changed_vars_3 on each changed var.
(emit_notes_for_differences_1): Clear cur_loc_changed and
in_changed_variables. Recompute cur_loc of new_var.
(emit_notes_for_differences_2): Clear cur_loc if new variable
appears.
(vt_emit_notes): Initialize and destroy emitted_notes.
Bernd Schmidt [Sun, 7 Mar 2010 15:20:12 +0000 (15:20 +0000)]
re PR middle-end/42220 (FAIL: gfortran.dg/complex_intrinsic_5.f90 -m64 -O -frename-registers)
PR rtl-optimization/42220
* regrename.c (scan_rtx) <case STRICT_LOW_PART, ZERO_EXTRACT>:
Use verify_reg_tracked to determine if we should use OP_OUT rather
than OP_INOUT.
(build_def_use): If we see an in-out operand for a register that we
know nothing about, treat is an output if possible, fail the block if
not.
Eric Botcazou [Fri, 5 Mar 2010 22:52:02 +0000 (22:52 +0000)]
Makefile.in (PLUGINCC, [...]): New variables.
* Makefile.in (PLUGINCC, PLUGINCFLAGS): New variables.
(site.exp): Export them when plugins are enabled.
testsuite/
* lib/plugin-support.exp (plugin-test-execute): Use PLUGINCC in lieu
of HOSTCC and PLUGINCFLAGS in lieu of HOSTCFLAGS.
* lib/gnat.exp (gnat_init): Remove GNAT_UNDER_TEST_ORIG.
(gnat_target_compile): Likewise.
Reinitialize GNAT_UNDER_TEST if target changes.
Set ADA_INCLUDE_PATH, ADA_OBJECTS_PATH in environment.
(local_find_gnatmake): Pass full --GCC to gnatlink.
Remove --LINK.
2010-03-04 Paolo Carlini <paolo.carlini@oracle.com>
* testsuite/util/testsuite_container_traits.h (traits_base): Add
has_throwing_erase trait.
(traits<vector>, traits<deque>): Typedef the latter to true_type.
* testsuite/util/exception/safety.h (generation_prohibited):
Do not test vector::erase and deque::erase: can throw if
either copy constructor or assignment operator of value_type
throws.
* testsuite/23_containers/vector/requirements/exception/
generation_prohibited.cc: Remove xfail.
* testsuite/23_containers/deque/requirements/exception/
generation_prohibited.cc: Likewise.
* include/ext/throw_allocator.h (hash<__gnu_cxx::throw_value_limit>::
operator(), hash<__gnu_cxx::throw_value_random>::operator()): Pass
argument by const ref.
* testsuite/util/testsuite_container_traits.h (traits<map>,
traits<multimap>, traits<set>, traits<multiset>,
traits<unordered_map>, traits<unordered_multimap>,
traits<unordered_set>, traits<unordered_multiset>): Typedef
consistently has_erase and has_insert as true_type.
* testsuite/util/testsuite_container_traits.h
(traits<unordered_map>, traits<unordered_multimap>,
traits<unordered_set>, traits<unordered_multiset>): Do not wrongly
typedef has_size_type_constructor as true_type: the constructor
accepting a size_type actually gets the initial number of
buckets.
Andrew Pinski [Thu, 4 Mar 2010 19:59:19 +0000 (11:59 -0800)]
re PR c/43248 (ICE: tree check: expected class 'type', have 'exceptional' (error_mark) in useless_type_conversion_p, at tree-ssa.c:1233)
2010-03-04 Andrew Pinski <andrew_pinski@caviumnetworks.com>
PR c/43248
* c-decl.c (build_compound_literal): Return early if init is
an error_mark_node.
2010-03-04 Andrew Pinski <andrew_pinski@caviumnetworks.com>
PR c/43248
* gcc.dg/compound-literal-1.c: New testcase.
Richard Biener [Thu, 4 Mar 2010 13:25:27 +0000 (13:25 +0000)]
re PR rtl-optimization/40761 (IRA memory hog for insanely nested loops)
2010-03-04 Richard Guenther <rguenther@suse.de>
PR tree-optimization/40761
* tree-ssa-pre.c (compute_antic): Walk reverse postorder
in reverse order.
(my_rev_post_order_compute): New function.
(init_pre): Call it.
Tobias Burnus [Thu, 4 Mar 2010 12:56:06 +0000 (13:56 +0100)]
reassoc_4.f: Add --param max-completely-peel-times to dg-options for spu.
2010-03-04 Tobias Burnus <burnus@net-b.de>
Ken Werner <ken@linux.vnet.ibm.com>
* gfortran.dg/reassoc_4.f: Add --param max-completely-peel-times
to dg-options for spu.
* gfortran.dg/vect/vect-7.f90: Add vect_intfloat_cvt to the
dump-scan target to exclude spu.
Co-Authored-By: Ken Werner <ken@linux.vnet.ibm.com>
From-SVN: r157224
Ralf Wildenhues [Thu, 4 Mar 2010 03:01:21 +0000 (03:01 +0000)]
doc: normalize 3DNow! spelling and spacing.
gcc/:
* doc/extend.texi (Vector Extensions, X86 Built-in Functions):
Use '3DNow!' for the extension of that name, ensure normal space
after the string.
* doc/invoke.texi (i386 and x86-64 Options): Likewise.
Janis Johnson [Wed, 3 Mar 2010 22:05:30 +0000 (22:05 +0000)]
sourcebuild.texi (Test directives): Document that arguments include-opts and exclude-opts are now optional for...
* doc/sourcebuild.texi (Test directives): Document that arguments
include-opts and exclude-opts are now optional for dg-skip-if,
dg-xfail-if, dg-xfail-run-if, and dg-shouldfail.
* lib/target-supports-dg.exp (check-flags): Provide defaults for
include-opts and exclude-opts; skip checking the flags if arguments
are the same as the defaults.
(dg-xfail-if): Verify the number of arguments, supply defaults
for unspecified optional arguments.
(dg-skip-if, dg-xfail-run-if): Verify the number of arguments.
Jason Merrill [Wed, 3 Mar 2010 19:01:36 +0000 (14:01 -0500)]
re PR c++/12909 (ambiguity in mangling vector types)
PR c++/12909
* mangle.c: Include cgraph.h.
(mangle_decl): If the mangled name will change in a later
ABI version, make the later mangled name an alias.
* method.c (make_alias_for): Copy DECL_ARGUMENTS.
* Make-lang.in (mangle.o): Depend on cgraph.h.
Paul Thomas [Wed, 3 Mar 2010 17:49:53 +0000 (17:49 +0000)]
re PR fortran/43243 ([4.4 Regression ?] Wrong-code due to missing array temp for DT with pointer component)
2010-03-03 Paul Thomas <pault@gcc.gnu.org>
PR fortran/43243
* trans-array.c (gfc_conv_array_parameter): Contiguous refs to
allocatable ultimate components do not need temporaries, whilst
ultimate pointer components do.
2010-03-03 Paul Thomas <pault@gcc.gnu.org>
PR fortran/43243
* gfortran.dg/internal_pack_12.f90: New test.
Mike Stump [Wed, 3 Mar 2010 16:46:27 +0000 (16:46 +0000)]
builtin-unreachable.c: Don't expect stack adjustments to not be present on machines that align the...
* gcc.target/i386/builtin-unreachable.c: Don't expect stack
adjustments to not be present on machines that align the stack to
more than 4 bytes and don't have a red zone yet as that is an
unimplemented optimization.
Janus Weil [Wed, 3 Mar 2010 15:12:40 +0000 (16:12 +0100)]
re PR fortran/43169 ([OOP] gfortran rejects pure procedure with select type construct)
2010-03-03 Janus Weil <janus@gcc.gnu.org>
PR fortran/43169
* resolve.c (resolve_code): Correctly set gfc_current_ns for
EXEC_SELECT_TYPE.
(gfc_impure_variable): Make it work with sub-namespaces (BLOCK etc).
(gfc_pure): Ditto.
Jakub Jelinek [Wed, 3 Mar 2010 07:02:37 +0000 (08:02 +0100)]
re PR debug/43237 (Wrong DW_AT_upper_bound)
PR debug/43237
* dwarf2out.c (add_bound_info): If a decl bound doesn't have decl_die,
fallthrough to default handling, just with want_address 0 instead of 2.
For single element lists, add_AT_loc directly, otherwise create an
artificial variable DIE and stick location list to it.