* config/cris/cris.h: Sanity-check TARGET_CPU_DEFAULT for contents.
(CRIS_DEFAULT_TUNE, CRIS_ARCH_CPP_DEFAULT)
(CRIS_DEFAULT_ASM_ARCH_OPTION): New macros.
(CRIS_CC1_SUBTARGET_SPEC): Change default tuning to use
CRIS_DEFAULT_TUNE.
(CRIS_CPP_SUBTARGET_SPEC): Ditto. Add CRIS_ARCH_CPP_DEFAULT.
(ASM_SPEC): Add sanity-check erroring out when both -march= and
-mcpu= are specified. Pass on either as --march=v32.
(CRIS_ASM_SUBTARGET_SPEC): When neither -march= or -mcpu= are
specified, pass on CRIS_DEFAULT_ASM_ARCH_OPTION.
(CRIS_CPU_V32): New macro.
[!TARGET_CPU_DEFAULT]: Default-define as CRIS_CPU_BASE.
[!TARGET_DEFAULT, TARGET_CPU_DEFAULT == 32]: Move default
TARGET_DEFAULT definition after new TARGET_CPU_DEFAULT definition.
Define v32-adjusted TARGET_DEFAULT.
(CRIS_DEFAULT_CPU_VERSION): Change to TARGET_CPU_DEFAULT from
CRIS_CPU_BASE.
(TARGET_V32): New macro.
(REG_ALLOC_ORDER_V32): New macro.
(HARD_REGNO_MODE_OK): Do not allow larger-than-register-size modes
into CRIS_ACR_REGNUM.
(enum reg_class): New classes ACR_REGS, SPEC_ACR_REGS,
GENNONACR_REGS and SPEC_GENNONACR_REGS.
(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Adjust for new classes.
(REGNO_REG_CLASS): Give ACR_REGS for CRIS_ACR_REGNUM.
(MODE_CODE_BASE_REG_CLASS): Define, give for OCODE POST_INC
GENNONACR_REGS, BASE_REG_CLASS otherwise.
(REG_CLASS_FROM_LETTER): 'a' is for ACR_REGS.
(REGNO_MODE_CODE_OK_FOR_BASE_P): Define, refusing OCODE POST_INC
for CRIS_ACR_REGNUM.
(PREFERRED_RELOAD_CLASS): Keep ACR_REGS as preferred.
(HARD_REGNO_RENAME_OK): Refuse CRIS_ACR_REGNUM as TO.
(EXTRA_CONSTRAINT): New constraint 'U'.
(TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE)
(ASM_OUTPUT_ADDR_DIFF_ELT): Adjust for CRIS v32.
(BASE_OR_AUTOINCR_P): Refuse POST_INC for CRIS_ACR_REGNUM.
(SIMPLE_ADDRESS_P): Remove.
(GO_IF_LEGITIMATE_ADDRESS): Use BASE_OR_AUTOINCR_P, not redundant
SIMPLE_ADDRESS_P. Make one chained if-else, finishing as
non-match after BASE_OR_AUTOINCR_P for TARGET_V32.
(REGISTER_MOVE_COST): Just call the new function
cris_register_move_cost.
(enum cris_pic_symbol_type): Rename cris_gotrel_symbol to
cris_rel_symbol. All users changed.
(REGISTER_NAMES): Replace "pc" with "acr".
(ADDITIONAL_REGISTER_NAMES): Add "pc" for 15.
(ASM_OUTPUT_REG_PUSH): Change to v32-compatible sequence.
(ASM_OUTPUT_REG_POP): Change to v32-compatible syntax.
(ASM_OUTPUT_CASE_END): Just call the new function
cris_asm_output_case_end.
From-SVN: r130970
* config/cris/linux.h: Sanity-check TARGET_CPU_DEFAULT for
presence and contents.
(CRIS_SUBTARGET_DEFAULT_ARCH): New macro, MASK_AVOID_GOTPLT for
v32, 0 otherwise.
(CRIS_CPP_SUBTARGET_SPEC, CRIS_CC1_SUBTARGET_SPEC,
CRIS_ASM_SUBTARGET_SPEC): Adjust for different
TARGET_CPU_DEFAULT.
(CRIS_SUBTARGET_DEFAULT): Add CRIS_SUBTARGET_DEFAULT_ARCH.
From-SVN: r130969
* config/cris/cris.c (ASSERT_PLT_UNSPEC): Remove unused macro.
(cris_movem_load_rest_p, cris_store_multiple_op_p): Remove FIXME.
Change regno_dir and regno only if !TARGET_V32.
(cris_conditional_register_usage): If TARGET_V32, set
reg_alloc_order as per REG_ALLOC_ORDER_V32 and make
CRIS_ACR_REGNUM non-fixed.
(cris_print_base): Add gcc_assert for post_inc on CRIS_ACR_REGNUM.
(cris_print_operand) <case 'Z', case 'u'>: New cases.
<case REG of case 'H'>: Allow for CRIS_SRP_REGNUM.
(cris_reload_address_legitimized): Always return false for
TARGET_V32.
(cris_register_move_cost): New function, guts from
REGISTER_MOVE_COST adjusted for CRIS v32.
(cris_normal_notice_update_cc): New function split out from...
(cris_notice_update_cc): Set cc_status.flags CC_REVERSED for
TARGET_CCINIT. Call cris_normal_notice_update_cc for CC_REV,
CC_NOOV32 and CC_NORMAL, but set cc_status.flags CC_NO_OVERFLOW
for CC_NOOV32 and TARGET_V32.
(cris_simple_epilogue): Always return false for TARGET_V32 if
cris_return_address_on_stack yields true.
(cris_cc0_user_requires_cmp): New function.
(cris_valid_pic_const): Add argument ANY_OPERAND. All callers
changed. Handle CRIS_UNSPEC_PLT_PCREL and CRIS_UNSPEC_PCREL.
(cris_asm_output_case_end): New function, guts from
ASM_OUTPUT_CASE_END adjusted for CRIS v32.
(cris_override_options): Adjust for CRIS v32. Mask out
TARGET_SIDE_EFFECT_PREFIXES and TARGET_MUL_BUG if v32.
(cris_asm_output_mi_thunk, cris_expand_epilogue)
(cris_gen_movem_load, cris_emit_movem_store)
(cris_expand_pic_call_address, cris_asm_output_symbol_ref)
(cris_asm_output_label_ref, cris_output_addr_const_extra): Adjust
for CRIS v32.
(cris_split_movdx): Copy re-used MEM.
From-SVN: r130966
* config.gcc: Make crisv32-* have cpu_type cris. Handle
crisv32-*-elf and crisv32-*-none like cris-*-elf and cris-*-none
but without multilibs and with target_cpu_default=32.
From-SVN: r130965
* config.host (crisv32-*-elf, crisv32-*-none): New, same as
cris-*-elf and cris-*-none.
(crisv32-*-linux*): Similar, as cris-*-linux*.
From-SVN: r130964
gcc/ChangeLog:
* dwarf2out.c (reference_to_unused): Don't emit strings in
initializers just because of debug information.
* tree.h (TREE_ASM_WRITTEN): Document use for STRING_CSTs.
gcc/testsuite/ChangeLog:
* gcc.dg/debug/const-3.c: New.
From-SVN: r130959
2007-12-15 Benjamin Kosnik <bkoz@redhat.com>
Paolo Carlini <pcarlini@suse.de>
* include/parallel/partial_sum.h: Include new. Fix for DR 402.
* include/parallel/multiway_merge.h:Fix for DR 402.
* include/parallel/losertree.h: Same.
* include/parallel/quicksort.h: Same.
* include/parallel/random_shuffle.h: Same.
* include/parallel/multiway_mergesort.h: Same.
Co-Authored-By: Paolo Carlini <pcarlini@suse.de>
From-SVN: r130956
PR target/29978
* config/i386/i386.c (ix86_expand_branch): Optimize LE/LEU/GT/GTU
DImode comparisons against constant with all 1's in the lower word.
* gcc.target/i386/pr29978.c: New test.
From-SVN: r130938
* config/i386/sse.md (sse4_2_pcmpestr): Use reg_not_xmm0_operand
constraint for operand2. Use nonimm_not_xmm0_operand constraint
for operand 4. Update arguments in the call to
gen_sse4_2_pcmpestr_cconly.
(sse_4_2_pcmpestr_cconly): Renumber insn operands and update insn
template accordingly.
(sse4_2_pcmpistr): Use reg_not_xmm0_operand constraint for operand2.
Use nonimm_not_xmm0_operand constraint for operand 3. Update
arguments in the call to gen_sse4_2_pcmpistr_cconly.
(sse_4_2_pcmpistr_cconly): Renumber insn operands and update insn
testsuite/ChangeLog:
* gcc.target/i386/sse-12.c (dg-options): Use -msse4
instead of -msse4.1.
* gcc.target/i386/sse-12.c (dg-options): Ditto.
* g++.dg/other/i386-2.C (dg-options): Ditto.
From-SVN: r130934
2007-12-14 Richard Guenther <rguenther@suse.de>
PR middle-end/34462
* tree-ssa-operands.h (create_ssa_artificial_load_stmt): Add
parameter to say whether to unlink immediate uses.
* tree-ssa-operands.c (create_ssa_artificial_load_stmt): Do not
mark the artificial stmt as modified. Unlink immediate uses
only if requested.
* tree-ssa-dom.c (record_equivalences_from_stmt): Update caller.
* tree-ssa-pre.c (insert_fake_stores): Likewise.
* gcc.c-torture/compile/20071214-1.c: New testcase.
From-SVN: r130931
* gcc.target/i386/sse-14.c (test_1, test_2, test_2x, test_4): New
macros to test macroized SSE intrinsics. Use new macros to test
macroized SSE intrinsics from ammintrin.h, smmintrin.h, tmmintrin.h,
emmintrin.h, xmmintrin.h and bmmintrin.h
* gcc.target/i386/sse-13.c (__builtin_ia32_pcmp?str*128): Redefine
to test with immediate operand.
From-SVN: r130930
2007-12-13 Anton Korobeynikov <asl@math.spbu.ru>
* trans-decl.c (gfc_build_builtin_function_decls): Correct decl
construction for select_string() and internal_unpack()
2007-12-13 Duncan Sands <baldrick@free.fr>
Anton Korobeynikov <asl@math.spbu.ru>
* trans-expr.c (gfc_conv_structure): Make sure record
* constructors
for static variables are marked constant.
From-SVN: r130914
2007-12-13 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/34370
PR libfortran/34323
PR libfortran/34405
* io/io.h: Add previous_nonadvancing_write to gfc_unit.
Add prototype for finish_last_advance_record.
* io/file_pos.c (st_backspace): Generate error if backspace is
attempted for direct access or unformatted stream.
If there are bytes left from a previous ADVANCE="no", write
them out before performing the backspace.
(st_endfile): Generate error if endfile is attempted for
direct access.
If there are bytes left from a previous ADVANCE="no", write
them out before performing the endfile.
(st_rewind): Generate error if rewind is attempted for
direct access.
* unit.c (close_unit_1): Move functionality to write
previously written bytes to...
(finish_last_advance_record): ... here.
* transfer.c (data_transfer_init): If reading, reset
previous_nonadvancing_write.
(finalize_transfer): Set the previous_noadvancing_write
flag if we are writing and ADVANCE="no" was specified.
Only call next_record() if advance="no" wasn't specified.
2007-12-13 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/34370
PR libfortran/34323
PR libfortran/34405
* gfortran.dg/advance_6.f90: New test case.
* gfortran.dg/direct_io_7.f90: New test case.
* gfortran.dg/streamio_13.f90: New test case.
From-SVN: r130912
2007-12-13 Andrew Pinski <pinskia@gmail.com>
David Daney <ddaney@avtrex.com>
PR bootstrap/34144
* system.h: Make -Wuninitialized non-fatal if ASSERT_CHECKING
is disabled.
Co-Authored-By: David Daney <ddaney@avtrex.com>
From-SVN: r130908
PR rtl-optimization/32636
* df-scan.c (df_get_entry_block_def_set): Set struct_value_rtx
regno in entry_block_defs even if HAVE_prologue && epilogue_completed.
From-SVN: r130907
2007-12-13 Richard Guenther <rguenther@suse.de>
PR tree-optimization/34450
* params.def (PARAM_SCCVN_MAX_SCC_SIZE): New param.
* invoke.texi (sccvn-max-scc-size): Document.
* Makefile.in (tree-ssa-sccvn.o): Add $(PARAMS_H) dependency.
* tree-ssa-sccvn.h (run_scc_vn): Return true on success, false
on error.
* tree-ssa-sccvn.c (params.h): Include.
(DFS): Return true if all went well, return false as soon as
a SCC exceeds the size of PARAM_SCCVN_MAX_SCC_SIZE.
(run_scc_vn): Return true if all went well, return false if
we aborted during DFS.
* tree-ssa-pre.c (execute_pre): Check if SCCVN finished
successfully, otherwise bail out.
From-SVN: r130895
2007-12-13 Olga Golovanevsky <olga@il.ibm.com>
* ipa-struct-reorg.c (is_candidate): Print information to dump
file when the type is initialized.
(get_stmt_accesses): Likewise when a structure has bitfields
or field access is too complicate.
(safe_cond_expr_check): Likewise for unsafe condition expressions.
(exclude_cold_structs): Likewise for cold structures.
(collect_structures): Suppress redundant print when there are
no structures to transform.
(do_reorg): Print to dump file a number of structures that
will be transformed.
(dump_new_types): Print a number of new types to replace
an original structure type.
From-SVN: r130894