summaryrefslogtreecommitdiff
path: root/gcc/fold-const.c
Commit message (Collapse)AuthorAgeFilesLines
* Remove trailing white spaces.hjl2009-11-251-57/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2009-11-25 H.J. Lu <hongjiu.lu@intel.com> * alias.c: Remove trailing white spaces. * alloc-pool.c: Likewise. * alloc-pool.h: Likewise. * attribs.c: Likewise. * auto-inc-dec.c: Likewise. * basic-block.h: Likewise. * bb-reorder.c: Likewise. * bt-load.c: Likewise. * builtins.c: Likewise. * builtins.def: Likewise. * c-common.c: Likewise. * c-common.h: Likewise. * c-cppbuiltin.c: Likewise. * c-decl.c: Likewise. * c-format.c: Likewise. * c-lex.c: Likewise. * c-omp.c: Likewise. * c-opts.c: Likewise. * c-parser.c: Likewise. * c-pretty-print.c: Likewise. * c-tree.h: Likewise. * c-typeck.c: Likewise. * caller-save.c: Likewise. * calls.c: Likewise. * cfg.c: Likewise. * cfganal.c: Likewise. * cfgexpand.c: Likewise. * cfghooks.c: Likewise. * cfghooks.h: Likewise. * cfglayout.c: Likewise. * cfgloop.c: Likewise. * cfgloop.h: Likewise. * cfgloopmanip.c: Likewise. * cfgrtl.c: Likewise. * cgraph.c: Likewise. * cgraph.h: Likewise. * cgraphbuild.c: Likewise. * cgraphunit.c: Likewise. * cif-code.def: Likewise. * collect2.c: Likewise. * combine.c: Likewise. * convert.c: Likewise. * coverage.c: Likewise. * crtstuff.c: Likewise. * cse.c: Likewise. * cselib.c: Likewise. * dbgcnt.c: Likewise. * dbgcnt.def: Likewise. * dbgcnt.h: Likewise. * dbxout.c: Likewise. * dce.c: Likewise. * ddg.c: Likewise. * ddg.h: Likewise. * defaults.h: Likewise. * df-byte-scan.c: Likewise. * df-core.c: Likewise. * df-problems.c: Likewise. * df-scan.c: Likewise. * df.h: Likewise. * dfp.c: Likewise. * diagnostic.c: Likewise. * diagnostic.h: Likewise. * dominance.c: Likewise. * domwalk.c: Likewise. * double-int.c: Likewise. * double-int.h: Likewise. * dse.c: Likewise. * dwarf2asm.c: Likewise. * dwarf2asm.h: Likewise. * dwarf2out.c: Likewise. * ebitmap.c: Likewise. * ebitmap.h: Likewise. * emit-rtl.c: Likewise. * et-forest.c: Likewise. * except.c: Likewise. * except.h: Likewise. * expmed.c: Likewise. * expr.c: Likewise. * expr.h: Likewise. * final.c: Likewise. * flags.h: Likewise. * fold-const.c: Likewise. * function.c: Likewise. * function.h: Likewise. * fwprop.c: Likewise. * gcc.c: Likewise. * gcov-dump.c: Likewise. * gcov-io.c: Likewise. * gcov-io.h: Likewise. * gcov.c: Likewise. * gcse.c: Likewise. * genattr.c: Likewise. * genattrtab.c: Likewise. * genautomata.c: Likewise. * genchecksum.c: Likewise. * genconfig.c: Likewise. * genflags.c: Likewise. * gengtype-parse.c: Likewise. * gengtype.c: Likewise. * gengtype.h: Likewise. * genmddeps.c: Likewise. * genmodes.c: Likewise. * genopinit.c: Likewise. * genpreds.c: Likewise. * gensupport.c: Likewise. * ggc-common.c: Likewise. * ggc-page.c: Likewise. * ggc-zone.c: Likewise. * ggc.h: Likewise. * gimple-iterator.c: Likewise. * gimple-low.c: Likewise. * gimple-pretty-print.c: Likewise. * gimple.c: Likewise. * gimple.def: Likewise. * gimple.h: Likewise. * gimplify.c: Likewise. * graphds.c: Likewise. * graphite-clast-to-gimple.c: Likewise. * gthr-nks.h: Likewise. * gthr-posix.c: Likewise. * gthr-posix.h: Likewise. * gthr-posix95.h: Likewise. * gthr-single.h: Likewise. * gthr-tpf.h: Likewise. * gthr-vxworks.h: Likewise. * gthr.h: Likewise. * haifa-sched.c: Likewise. * hard-reg-set.h: Likewise. * hooks.c: Likewise. * hooks.h: Likewise. * hosthooks.h: Likewise. * hwint.h: Likewise. * ifcvt.c: Likewise. * incpath.c: Likewise. * init-regs.c: Likewise. * integrate.c: Likewise. * ipa-cp.c: Likewise. * ipa-inline.c: Likewise. * ipa-prop.c: Likewise. * ipa-pure-const.c: Likewise. * ipa-reference.c: Likewise. * ipa-struct-reorg.c: Likewise. * ipa-struct-reorg.h: Likewise. * ipa-type-escape.c: Likewise. * ipa-type-escape.h: Likewise. * ipa-utils.c: Likewise. * ipa-utils.h: Likewise. * ipa.c: Likewise. * ira-build.c: Likewise. * ira-color.c: Likewise. * ira-conflicts.c: Likewise. * ira-costs.c: Likewise. * ira-emit.c: Likewise. * ira-int.h: Likewise. * ira-lives.c: Likewise. * ira.c: Likewise. * jump.c: Likewise. * lambda-code.c: Likewise. * lambda-mat.c: Likewise. * lambda-trans.c: Likewise. * lambda.h: Likewise. * langhooks.c: Likewise. * lcm.c: Likewise. * libgcov.c: Likewise. * lists.c: Likewise. * loop-doloop.c: Likewise. * loop-init.c: Likewise. * loop-invariant.c: Likewise. * loop-iv.c: Likewise. * loop-unroll.c: Likewise. * lower-subreg.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-in.c: Likewise. * lto-streamer-out.c: Likewise. * lto-streamer.c: Likewise. * lto-streamer.h: Likewise. * lto-symtab.c: Likewise. * lto-wpa-fixup.c: Likewise. * matrix-reorg.c: Likewise. * mcf.c: Likewise. * mode-switching.c: Likewise. * modulo-sched.c: Likewise. * omega.c: Likewise. * omega.h: Likewise. * omp-low.c: Likewise. * optabs.c: Likewise. * optabs.h: Likewise. * opts-common.c: Likewise. * opts.c: Likewise. * params.def: Likewise. * params.h: Likewise. * passes.c: Likewise. * plugin.c: Likewise. * postreload-gcse.c: Likewise. * postreload.c: Likewise. * predict.c: Likewise. * predict.def: Likewise. * pretty-print.c: Likewise. * pretty-print.h: Likewise. * print-rtl.c: Likewise. * print-tree.c: Likewise. * profile.c: Likewise. * read-rtl.c: Likewise. * real.c: Likewise. * recog.c: Likewise. * reg-stack.c: Likewise. * regcprop.c: Likewise. * reginfo.c: Likewise. * regmove.c: Likewise. * regrename.c: Likewise. * regs.h: Likewise. * regstat.c: Likewise. * reload.c: Likewise. * reload1.c: Likewise. * resource.c: Likewise. * rtl.c: Likewise. * rtl.def: Likewise. * rtl.h: Likewise. * rtlanal.c: Likewise. * sbitmap.c: Likewise. * sched-deps.c: Likewise. * sched-ebb.c: Likewise. * sched-int.h: Likewise. * sched-rgn.c: Likewise. * sched-vis.c: Likewise. * sdbout.c: Likewise. * sel-sched-dump.c: Likewise. * sel-sched-dump.h: Likewise. * sel-sched-ir.c: Likewise. * sel-sched-ir.h: Likewise. * sel-sched.c: Likewise. * sel-sched.h: Likewise. * sese.c: Likewise. * sese.h: Likewise. * simplify-rtx.c: Likewise. * stack-ptr-mod.c: Likewise. * stmt.c: Likewise. * stor-layout.c: Likewise. * store-motion.c: Likewise. * stringpool.c: Likewise. * stub-objc.c: Likewise. * sync-builtins.def: Likewise. * target-def.h: Likewise. * target.h: Likewise. * targhooks.c: Likewise. * targhooks.h: Likewise. * timevar.c: Likewise. * tlink.c: Likewise. * toplev.c: Likewise. * toplev.h: Likewise. * tracer.c: Likewise. * tree-affine.c: Likewise. * tree-affine.h: Likewise. * tree-browser.def: Likewise. * tree-call-cdce.c: Likewise. * tree-cfg.c: Likewise. * tree-cfgcleanup.c: Likewise. * tree-chrec.c: Likewise. * tree-chrec.h: Likewise. * tree-complex.c: Likewise. * tree-data-ref.c: Likewise. * tree-data-ref.h: Likewise. * tree-dfa.c: Likewise. * tree-dump.c: Likewise. * tree-dump.h: Likewise. * tree-eh.c: Likewise. * tree-flow-inline.h: Likewise. * tree-flow.h: Likewise. * tree-if-conv.c: Likewise. * tree-inline.c: Likewise. * tree-into-ssa.c: Likewise. * tree-loop-distribution.c: Likewise. * tree-loop-linear.c: Likewise. * tree-mudflap.c: Likewise. * tree-nested.c: Likewise. * tree-nomudflap.c: Likewise. * tree-nrv.c: Likewise. * tree-object-size.c: Likewise. * tree-optimize.c: Likewise. * tree-outof-ssa.c: Likewise. * tree-parloops.c: Likewise. * tree-pass.h: Likewise. * tree-phinodes.c: Likewise. * tree-predcom.c: Likewise. * tree-pretty-print.c: Likewise. * tree-profile.c: Likewise. * tree-scalar-evolution.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-live.h: 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-operands.h: 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-structalias.c: Likewise. * tree-ssa-ter.c: Likewise. * tree-ssa-threadedge.c: Likewise. * tree-ssa-threadupdate.c: Likewise. * tree-ssa-uncprop.c: Likewise. * tree-ssa.c: Likewise. * tree-ssanames.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-vectorizer.h: Likewise. * tree-vrp.c: Likewise. * tree.c: Likewise. * tree.def: Likewise. * tree.h: Likewise. * treestruct.def: Likewise. * unwind-compat.c: Likewise. * unwind-dw2-fde-glibc.c: Likewise. * unwind-dw2.c: Likewise. * value-prof.c: Likewise. * value-prof.h: Likewise. * var-tracking.c: Likewise. * varasm.c: Likewise. * varpool.c: Likewise. * vec.c: Likewise. * vec.h: Likewise. * vmsdbgout.c: Likewise. * web.c: Likewise. * xcoffout.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154645 138bc75d-0d04-0410-961f-82ee72b054a4
* PR tree-optimization/41987ghazi2009-11-101-27/+29
| | | | | | | | | | | * fold-const.c (const_binop): Avoid using fold_buildN(). testsuite: * gcc.c-torture/compile/pr41987.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154065 138bc75d-0d04-0410-961f-82ee72b054a4
* PR bootstrap/41451aldyh2009-10-271-2/+0
| | | | | | | | | * fold-const.c (fold_binary_loc): Do not call protected_set_expr_location. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@153588 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-10-26 Ben Elliston <bje@au.ibm.com>uweigand2009-10-261-7/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Michael Meissner <meissner@linux.vnet.ibm.com> Ulrich Weigand <uweigand@de.ibm.com> * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document. (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise. (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise. * target.h (struct target_def): Add pointer_mode, address_mode, and valid_pointer_mode to addr_space substructure. * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define. (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise. (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise. (TARGET_ADDR_SPACE_HOOKS): Add them. * targhooks.c (target_default_pointer_address_modes_p): New function. * target.h (target_default_pointer_address_modes_p): Add prototype. * targhooks.c (default_addr_space_pointer_mode): New function. (default_addr_space_address_mode): Likewise. (default_addr_space_valid_pointer_mode): Likewise. * targhooks.h (default_addr_space_pointer_mode): Add prototype. (default_addr_space_address_mode): Likewise. (default_addr_space_valid_pointer_mode): Likewise. * output.h (default_valid_pointer_mode): Move to ... * targhooks.h (default_valid_pointer_mode): ... here. * varasm.c (default_valid_pointer_mode): Move to ... * targhooks.c (default_valid_pointer_mode): ... here. * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode instead of targetm.valid_pointer_mode. * fold-const.c (fit_double_type): Use int_or_pointer_precision. * tree.c (integer_pow2p): Likewise. (tree_log2): Likewise. (tree_floor_log2): Likewise. (signed_or_unsigned_type_for): Support pointer type of different size. (int_or_pointer_precision): New function. * tree.h (int_or_pointer_precision): Add prototype. * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types. * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of incoming pointer type instead of POINTER_SIZE. * tree.c (build_pointer_type): Use appropriate pointer mode instead of ptr_mode. (build_reference_type): Likewise. * expr.c (store_expr): Likewise. (expand_expr_addr_expr): Likewise. * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise. * cfgexpand.c (expand_debug_expr): Likewise. * auto-inc-dec.c: Include "target.h". (try_merge): Use appropriate address mode instead of Pmode. (find_inc): Likewise. * combine.c (find_split_point): Likewise. * cselib.c (cselib_record_sets): Likewise. * dse.c (replace_inc_dec): Likewise. (canon_address): Likewise. * var-tracking.c (replace_expr_with_values): Likewise. (count_uses): Likewise. (add_uses): Likewise. (add_stores): Likewise. * emit-rtl.c: Include "target.h". (adjust_address_1): Use appropriate address mode instead of Pmode. (offset_address): Likewise. * explow.c (break_out_memory_refs): Likewise. (memory_address_addr_space): Likewise. (promote_mode): Likewise. * expr.c (move_by_pieces): Likewise. (emit_block_move_via_loop): Likewise. (store_by_pieces): Likewise. (store_by_pieces_1): Likewise. (expand_assignment): Likewise. (store_constructor): Likewise. (expand_expr_addr_expr): Likewise. (expand_expr_real_1): Likewise. * cfgexpand.c (expand_debug_expr): Likewise. * ifcvt.c (noce_try_cmove_arith): Likewise. * regcprop.c (kill_autoinc_value): Likewise. * regmove.c (try_auto_increment): Likewise. * reload.c (find_reloads): Likewise. (find_reloads_address): Likewise. (find_reloads_address_1): Likewise. * sched-deps.c: Include "target.h". (sched_analyze_1): Use appropriate address mode instead of Pmode. (sched_analyze_2): Likewise. * sel-sched-dump.c: Include "target.h". (debug_mem_addr_value): Use appropriate address mode instead of Pmode. * stor-layout.c (layout_type): Likewise. * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise. (multiplier_allowed_in_address_p): Likewise. (get_address_cost): Likewise. * varasm.c (make_decl_rtl): Likewise. * expr.c (expand_assignment): Always convert offsets to appropriate address mode. (store_expr): Likewise. (store_constructor): Likewise. (expand_expr_real_1): Likewise. * reload.h (form_sum): Add MODE argument. * reload.c (form_sum): Add MODE argument, use it instead of Pmode. Update recursive calls. (subst_indexed_address): Update calls to form_sum. * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument. * tree-ssa-address.c: Include "target.h". (templates): Replace by ... (mem_addr_template_list): ... this new vector. (TEMPL_IDX): Handle address space numbers. (gen_addr_rtx): Add address mode argument, use it instead of Pmode. (addr_for_mem_ref): Add ADDRSPACE argument. Use per-address-space instead of global cache. Update call to gen_addr_rtx. (valid_mem_ref_p): Update call to addr_for_mem_ref. * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref. * rtl.h (convert_memory_address_addr_space): Add prototype. (convert_memory_address): Define as macro. * explow.c (convert_memory_address): Rename to ... (convert_memory_address_addr_space): ... this. Add ADDRSPACE argument. Use appropriate pointer and address modes instead of ptr_mode / Pmode. Update recursive calls. (memory_address_addr_space): Call convert_memory_address_addr_space. * expmed.c (make_tree): Likewise. * expr.c (expand_assignment): Likewise. (expand_expr_addr_expr_1): Likewise. Also, add ADDRSPACE argument. (expand_expr_addr_expr): Likewise. Also, update call. * alias.c (find_base_value): Guard pointer size optimizations. (find_base_term): Likewise. * rtlanal.c (nonzero_bits1): Likewise. (num_sign_bit_copies1): Likewise. * simplify-rtx.c (simplify_unary_operation_1): Likewise. * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency. (emit-rtl.o): Likewise. (auto-inc-dec.o): Likewise. (sched-deps.o): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@153573 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-10-26 Ben Elliston <bje@au.ibm.com>uweigand2009-10-261-1/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Michael Meissner <meissner@linux.vnet.ibm.com> Ulrich Weigand <uweigand@de.ibm.com> * doc/extend.texi (Named Address Spaces): New section. * coretypes.h (addr_space_t): New type. (ADDR_SPACE_GENERIC): New define. (ADDR_SPACE_GENERIC_P): New macro. * doc/tm.texi (Named Address Spaces): New section. (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document. (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document. (TARGET_ADDR_SPACE_SUBSET_P): Document. (TARGET_ADDR_SPACE_CONVERT): Document. * target.h (struct gcc_target): Add addr_space substructure. * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define. (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise. (TARGET_ADDR_SPACE_SUBSET_P): Likewise. (TARGET_ADDR_SPACE_CONVERT): Likewise. (TARGET_ADDR_SPACE_HOOKS): Likewise. (TARGET_INITIALIZER): Initialize addr_space hooks. * targhooks.c (default_addr_space_legitimate_address_p): New function. (default_addr_space_legitimize_address): Likewise. (default_addr_space_subset_p): Likewise. (default_addr_space_convert): Likewise. * targhooks.h (default_addr_space_legitimate_address_p): Add prototype. (default_addr_space_legitimize_address): Likewise. (default_addr_space_subset_p): Likewise. (default_addr_space_convert): Likewise. * doc/rtl.texi (MEM_ADDR_SPACE): Document. * rtl.h (mem_attrs): Add ADDRSPACE memory attribute. (MEM_ADDR_SPACE): New macro. * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set address space memory attribute. (mem_attrs_htab_hash): Handle address space memory attribute. (mem_attrs_htab_eq): Likewise. (set_mem_attributes_minus_bitpos): Likewise. (set_mem_alias_set): Likewise. (set_mem_align): Likewise. (set_mem_expr): Likewise. (set_mem_offset): Likewise. (set_mem_size): Likewise. (adjust_address_1): Likewise. (offset_address): Likewise. (widen_memoy_address): Likewise. (get_spill_slot_decl): Likewise. (set_mem_attrs_for_spill): Likewise. (set_mem_addr_space): New function. * emit-rtl.h (set_mem_addr_space): Add prototype. * print-rtl.c (print_rtx): Print address space memory attribute. * expr.c (expand_assignment): Set address space memory attribute of generated MEM RTXes as appropriate. (expand_expr_real_1): Likewise. * cfgexpand.c (expand_debug_expr): Likewise. * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise. * tree.h (struct tree_base): Add address_space bitfield. Reduce size of "spare" bitfield. (TYPE_ADDR_SPACE): New macro. (ENCODE_QUAL_ADDR_SPACE): Likewise. (DECODE_QUAL_ADDR_SPACE): Likewise. (CLEAR_QUAL_ADDR_SPACE): Likewise. (KEEP_QUAL_ADDR_SPACE): Likewise. (TYPE_QUALS): Encode type address space. (TYPE_QUALS_NO_ADDR_SPACE): New macro. * tree.c (set_type_quals): Set type address space. (build_array_type): Inherit array address space from element type. * print-tree.c (print_node_brief): Print type address space. (print_node): Likewise. * tree-pretty-print.c (dump_generic_node): Likewise. * explow.c (memory_address): Rename to ... (memory_address_addr_space): ... this. Add ADDRSPACE argument. Use address-space aware variants of memory address routines. * recog.c (memory_address_p): Rename to ... (memory_address_addr_space_p): ... this. Add ADDSPACE argument. Use address-space aware variants of memory address routines. (offsettable_address_p): Rename to ... (offsettable_address_addr_space_p): ... this. Add ADDRSPACE argument. Use address-space aware variants of memory address routines. * reload.c (strict_memory_address_p): Rename to ... (strict_memory_address_addr_space_p): ... this. Add ADDSPACE argument. Use address-space aware variants of memory address routines. (maybe_memory_address_p): Rename to ... (maybe_memory_address_addr_space_p): ... this. Add ADDSPACE argument. Use address-space aware variants of memory address routines. * expr.h (memory_address_addr_space): Add prototype. (memory_address): Define as macro. * recog.h (memory_address_addr_space_p): Add prototype. (memory_address_p): Define as macro. (offsettable_address_addr_space_p): Add prototype. (offsettable_address_p): Define as macro. (strict_memory_address_addr_space_p): Add prototype. (strict_memory_address_p): Define as macro. * combine.c (find_split_point): Use address-space aware variants of memory address routines. * emit-rtl.c (operand_subword): Likewise. (change_address_1): Likewise. (adjust_address_1): Likewise. (offset_address): Likewise. * expr.c (emit_move_insn): Likewise. (expand_assignment): Likewise. (expand_expr_real_1): Likewise. * recog.c (verify_changes): Likewise. (general_operand): Likewise. (offsettable_memref_p): Likewise. (offsettable_nonstrict_memref_p): Likewise. (constrain_operands): Likewise. * reload.c (get_secondary_mem): Likewise. (find_reloads_toplev): Likewise. (find_reloads_address): Likewise. (find_reloads_subreg_address): Likewise. * reload1.c (reload): Likewise. * rtlhooks.c (gen_lowpart_if_possible): Likewise. * rtl.h (address_cost): Add ADDRSPACE argument. * rtlanal.c (address_cost): Add ADDRSPACE argument. Use address-space aware variant of memory address routines. * loop-invariant.c (create_new_invariant): Update address_cost call. * tree-ssa-loop-ivopts.c (computation_cost): Likewise. * fwprop.c (should_replace_address): Add ADDRSPACE argument. Use address-space aware variant of memory address routines. (propagate_rtx_1): Update call to should_replace_address. * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE argument. * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add ADDRSPACE argument. Use per-address-space instead of global cache. Use address-space aware variant of memory address routines. (get_address_cost): Likewise. (get_computation_cost_at): Update calls. * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument. Use address-space aware variant of memory address routines. (create_mem_ref_raw): Update call to valid_mem_ref_p. (most_expensive_mult_to_index): Update call to multiplier_allowed_in_address_p. * dwarf2out.c (modified_type_die): Output DW_AT_address_class attribute to indicate named address spaces. * varasm.c (get_variable_section): DECLs in named address spaces cannot be "common". * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS for addresses in a non-generic address space. * expr.c (emit_block_move_hints): Do not use libcalls for memory in non-generic address spaces. (clear_storage_hints): Likewise. (expand_assignment): Likewise. * fold-const.c (operand_equal_p): Expressions refering to different address spaces are not equivalent. * rtl.c (rtx_equal_p_cb): MEMs refering to different address spaces are not equivalent. (rtx_equal_p): Likewise. * cse.c (exp_equiv_p): Likewise. * jump.c (rtx_renumbered_equal_p): Likewise. * reload.c (operands_match_p): Likewise. * alias.c (nonoverlapping_memrefs_p): MEMs refering to different address spaces may alias. (true_dependence): Likewise. (canon_true_dependence): Likewise. (write_dependence_p): Likewise. * dse.c (canon_address): Handle named address spaces. * ifcvt.c (noce_try_cmove_arith): Likewise. * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code. * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR. * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR to handle conversions between different address spaces. * fold-const.c (fold_convert_loc): Likewise. (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR. * tree-pretty-print.c (dump_generic_node): Likewise. * gimple-pretty-print.c (dump_unary_rhs): Likewise. * tree-cfg.c (verify_gimple_assign_unary): Likewise. * tree-inline.c (estimate_operator_cost): Likewise. * tree-ssa.c (useless_type_conversion_p): Conversions between pointers to different address spaces are not useless. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@153572 138bc75d-0d04-0410-961f-82ee72b054a4
* * builtins.c (interclass_mathfn_icode): New helper.matz2009-09-281-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (expand_builtin_interclass_mathfn): Use it here, and split folding into ... (fold_builtin_interclass_mathfn): ... this new folder. (build_call_nofold_loc): New static helper. (build_call_nofold): New wrapper macro for above. (expand_builtin_int_roundingfn): Use it instead of build_call_expr. (expand_builtin_pow): Ditto. (expand_builtin_memset_args): Ditto. (expand_builtin_printf): Ditto. (expand_builtin_fprintf): Ditto. (expand_builtin_sprintf): Ditto. (expand_builtin_memory_chk): Ditto. (expand_builtin_mempcpy_args): Ditto and don't call folders. (expand_builtin_stpcpy): Ditto. (expand_builtin_strcmp): Ditto. (expand_builtin_strncmp): Ditto. (expand_builtin_strcpy): Remove FNDECL and MODE arguments. (expand_builtin_strcpy_args): Don't call folders. (expand_builtin_memcmp): Ditto. (expand_builtin_strncpy): Ditto, and use target. (expand_builtin_memcpy): Ditto. (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr, expand_builtin_strpbrk, expand_builtin_memmove, expand_builtin_memmove_args, expand_builtin_bcopy, expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat, expand_builtin_strspn, expand_builtin_strcspn, expand_builtin_fputs): Remove these. (expand_builtin): Don't call the above, change calls to other expanders that changed prototype. (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy. (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call fold_builtin_interclass_mathfn. (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy. (fold_builtin_strcat): Add folding split from expand_builtin_strcat. * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp. * passes.c (init_optimization_passes): Move pass_fold_builtins after last phiopt pass. * tree-inline.c (fold_marked_statements): When folding builtins iterate over all instruction potentially generated. * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare earlier. (fold_gimple_call): Use it to always fold calls (into potentially multiple instructions). * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p calls into zero at this time. * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple statements generated by builtin folding. testsuite/ * gcc.dg/builtins-44.c: Use __builtin_isinf_sign when checking for sign of -Inf. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@152236 138bc75d-0d04-0410-961f-82ee72b054a4
* * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.ebotcazou2009-09-271-3/+13
| | | | | | | | | (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary. * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum of the length and zero. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@152217 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/41435ghazi2009-09-241-3/+68
| | | | | | | | | | | | | | * fold-const.c (const_binop): Handle complex int division. * tree-complex.c (expand_complex_div_straight, expand_complex_div_wide): Update comments. testsuite: * gcc.dg/torture/builtin-math-7.c: Test complex int division at compile-time. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@152145 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/30789ghazi2009-09-201-2/+6
| | | | | | | | | | | | | | | | * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter. (do_mpc_ckconv): Accept FORCE_CONVERT parameter. (fold_builtin_2, do_mpc_arg1): Update accordingly. * fold-const.c (const_binop): Likewise. * real.h (do_mpc_arg2): Update prototype. testsuite: * gcc.dg/torture/builtin-math-7.c: Update for testing Annex G cases in static initializers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151904 138bc75d-0d04-0410-961f-82ee72b054a4
* Squash commit of EH in gimplerth2009-09-141-4/+0
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151696 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/30789ghazi2009-08-141-0/+10
| | | | | | | | | | | | | | | * builtins.c (do_mpc_arg2): Make extern, define for any MPC version. Move declaration... * real.h (do_mpc_arg2): ... here. * fold-const.c (const_binop): Use MPC for complex MULT_EXPR and RDIV_EXPR. testsuite: * gcc.dg/torture/builtin-math-7.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150760 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-07-17 Aldy Hernandez <aldyh@redhat.com>manu2009-07-161-1283/+1648
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Manuel López-Ibáñez <manu@gcc.gnu.org> PR 40435 * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h, builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c, tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c, c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c, calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c, tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c, tree-inline.c, c-common.c, c-common.h, gimple.c, tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c, convert.c: Add location argument to fold_{unary,binary,ternary}, fold_build[123], build_call_expr, build_size_arg, build_fold_addr_expr, build_call_array, non_lvalue, size_diffop, fold_build1_initializer, fold_build2_initializer, fold_build3_initializer, fold_build_call_array, fold_build_call_array_initializer, fold_single_bit_test, omit_one_operand, omit_two_operands, invert_truthvalue, fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref, combine_comparisons, fold_builtin_*, fold_call_expr, build_range_check, maybe_fold_offset_to_address, round_up, round_down. objc/ * objc-act.c: Add location argument to all calls to build_fold_addr_expr. testsuite/ * gcc.dg/pr36902.c: Add column info. * g++.dg/gcov/gcov-2.C: Change count for definition. cp/ * typeck.c, init.c, class.c, method.c, rtti.c, except.c, error.c, tree.c, cp-gimplify.c, cxx-pretty-print.c, pt.c, semantics.c, call.c, cvt.c, mangle.c: Add location argument to fold_{unary,binary,ternary}, fold_build[123], build_call_expr, build_size_arg, build_fold_addr_expr, build_call_array, non_lvalue, size_diffop, fold_build1_initializer, fold_build2_initializer, fold_build3_initializer, fold_build_call_array, fold_build_call_array_initializer, fold_single_bit_test, omit_one_operand, omit_two_operands, invert_truthvalue, fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref, combine_comparisons, fold_builtin_*, fold_call_expr, build_range_check, maybe_fold_offset_to_address, round_up, round_down. fortran/ * trans-expr.c, trans-array.c, trans-openmp.c, trans-stmt.c, trans.c, trans-io.c, trans-decl.c, trans-intrinsic.c: Add location argument to fold_{unary,binary,ternary}, fold_build[123], build_call_expr, build_size_arg, build_fold_addr_expr, build_call_array, non_lvalue, size_diffop, fold_build1_initializer, fold_build2_initializer, fold_build3_initializer, fold_build_call_array, fold_build_call_array_initializer, fold_single_bit_test, omit_one_operand, omit_two_operands, invert_truthvalue, fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref, combine_comparisons, fold_builtin_*, fold_call_expr, build_range_check, maybe_fold_offset_to_address, round_up, round_down. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149722 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/40747jakub2009-07-151-20/+24
| | | | | | | | | | | * fold-const.c (fold_cond_expr_with_comparison): When folding < and <= to MIN, make sure the MIN uses the same type as the comparison's operands. * gcc.c-torture/execute/pr40747.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149675 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/40692jakub2009-07-091-0/+2
| | | | | | | | | | * fold-const.c (fold_cond_expr_with_comparison): Don't replace arg1 with arg01 if arg1 is already INTEGER_CST. * gcc.c-torture/compile/pr40692.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149418 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>manu2009-07-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | * c-lex.c: Replace %H by an explicit location. Update all calls. * c-common.c: Likewise. * c-decl.c: Likewise. * c-typeck.c: Likewise. * fold-const.c: Likewise. * gimplify.c: Likewise. * stmt.c: Likewise. * tree-cfg.c: Likewise. * tree-ssa-loop-niter.c: Likewise. * tree-vrp.c: Likewise. * value-prof.c: Likewise. java/ * jcf-parse.c: Replace %H by an explicit location. Update all calls. objc/ * objc-act.c: Replace %H by an explicit location. Update all calls. testsuite/ * gcc.dg/plugin/selfassign.c: Replace %H by an explicit location. Update all calls. * g++.dg/plugin/selfassign.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149310 138bc75d-0d04-0410-961f-82ee72b054a4
* * fold-const.c (contains_label_1): Fix comments.ebotcazou2009-06-281-11/+12
| | | | | | | (contains_label_p): Do not walk trees multiple time. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149037 138bc75d-0d04-0410-961f-82ee72b054a4
* libcpp/:ian2009-06-121-4/+5
| | | | | | | | | | | | | | | | | | | | | | | * include/cpplib.h (struct cpp_options): Add warn_cxx_operator_names field. (NODE_WARN_OPERATOR): Define. (struct cpp_hashnode): Increase flags field to 10 bits, decrease type to 6 bits. * init.c (mark_named_operators): Add flags parameter. (cpp_post_options): Pick flags value to pass to mark_named_operators. * lex.c (lex_identifier): If NODE_WARN_OPERATOR is set, warn that identifier is an operator name in C++. gcc/: * fold-const.c (fold_unary): Rename local variable and to and_expr. * c-opts.c (c_common_handle_option): For -Wc++-compat set cpp_opts->warn_cxx_operator_names. gcc/testsuite/: * gcc.dg/Wcxx-compat-13.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148438 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-06-03 Richard Guenther <rguenther@suse.de>rguenth2009-06-031-3/+4
| | | | | | | | | | PR middle-end/40328 * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR. * gcc.dg/torture/pr40328.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148134 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-05-26 Richard Guenther <rguenther@suse.de>rguenth2009-05-261-10/+18
| | | | | | | | | | | PR middle-end/40252 * fold-const.c (fold_binary): Use the correct types for building rotates. * gcc.c-torture/compile/pr40252.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147867 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/40204jakub2009-05-201-3/+5
| | | | | | | | | | | * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite recursion if build_int_cst_type returns the same INTEGER_CST as arg1. * gcc.c-torture/compile/pr40204.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147749 138bc75d-0d04-0410-961f-82ee72b054a4
* * fold-const.c (build_fold_addr_expr_with_type): Take the address ofebotcazou2009-05-201-0/+7
| | | | | | | the operand of VIEW_CONVERT_EXPR. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147739 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org>manu2009-05-151-7/+7
| | | | | | | | | | | | | | | | | | | | | | | PR 16302 * fold-const.c (make_range,build_range_check,merge_ranges): Move declaration to... (merge_ranges): Returns bool. * tree.h (make_range): .. to here. (build_range_check): Likewise. (merge_ranges): Likewise. Renamed from merge_ranges. * c-typeck.c (parser_build_binary_op): Update calls to warn_logical_operator. * c-common.c (warn_logical_operator): Add new warning. * c-common.h (warn_logical_operator): Update declaration. cp/ * call.c (build_new_op): Update calls to warn_logical_operator. testsuite/ * gcc.dg/pr16302.c: New. * g++.dg/warn/pr16302.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147596 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>sandra2009-05-151-1/+18
| | | | | | | | | gcc/ * fold-const.c (fold_convert_const_real_from_real): Check for overflow. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147589 138bc75d-0d04-0410-961f-82ee72b054a4
* * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters. Use themebotcazou2009-05-151-44/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | for bounds. (print_int_cst_bounds_in_octal_p): Likewise. (dbxout_type): Adjust calls to above functions. Be prepared to deal with subtypes. * dwarf2out.c (base_type_die): Likewise. (is_subrange_type): Delete. (subrange_type_die): Add LOW and HIGH parameters. Use them for bounds. (modified_type_die): Call subrange_type_for_debug_p on subtypes. * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it if the destination type is boolean. (build_range_check): Do not special-case subtypes. (fold_sign_changed_comparison): Likewise. (fold_unary): Likewise. * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define. (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS. * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds. * tree.c (subrange_type_for_debug_p): New predicate based on the former is_subrange_type. * tree.h (subrange_type_for_debug_p): Declare. * tree-chrec.c (avoid_arithmetics_in_type_p): Delete. (convert_affine_scev): Remove call to above function. (chrec_convert_aggressive): Likewise. * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return false for conversions involving subtypes. * tree-vrp.c (vrp_val_max): Do not special-case subtypes. (vrp_val_min): Likewise. (needs_overflow_infinity): Likewise. (extract_range_from_unary_expr): Likewise. ada/ * gcc-interface/ada-tree.h (TYPE_GCC_MIN_VALUE, TYPE_GCC_MAX_VALUE): New macros. (TYPE_RM_VALUES): Likewise. (TYPE_RM_SIZE): Rewrite in terms of TYPE_RM_VALUES. (SET_TYPE_RM_SIZE): New macro. (TYPE_RM_MIN_VALUE, TYPE_RM_MAX_VALUE): Likewise. (SET_TYPE_RM_SIZE, SET_TYPE_RM_MAX_VALUE): Likewise. (TYPE_MIN_VALUE, TYPE_MAX_VALUE): Redefine. * gcc-interface/gigi.h (create_range_type): Declare. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Modular_Integer_Type> Use SET_TYPE_RM_MAX_VALUE to set the upper bound on the UMT type. <E_Signed_Integer_Subtype>: Build a regular integer type first and then set the RM bounds. Use SET_TYPE_RM_SIZE to set the RM size. <E_Floating_Point_Subtype>: Build a regular floating-point type first and then set the RM bounds. <E_Array_Type>: Use create_range_type instead of build_range_type. <E_Array_Subtype>: Build a regular integer type first and then set the RM bounds for the extra subtype. <E_String_Literal_Subtype>: Use create_range_type instead of build_range_type. <all>: Set the RM bounds for enumeration types and the GCC bounds for floating-point types. (set_rm_size): Use SET_TYPE_RM_SIZE to set the RM size. (make_type_from_size) <INTEGER_TYPE>: Use SET_TYPE_RM_{MIN,MAX}_VALUE to set the bounds. Use SET_TYPE_RM_SIZE to set the RM size. (substitute_in_type) <INTEGER_TYPE>: Deal with GCC bounds for domain types and with RM bounds for subtypes. * gcc-interface/misc.c (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define. (gnat_print_type) <REAL_TYPE>: New case. <ENUMERAL_TYPE>: Fall through to above case. (gnat_get_subrange_bounds): New function. * gcc-interface/trans.c (add_decl_expr): Mark the trees rooted as TYPE_RM_MIN_VALUE and TYPE_RM_MAX_VALUE, if any. * gcc-interface/utils.c (gnat_init_decl_processing): Use precision 8 for booleans. Adjust and use SET_TYPE_RM_SIZE to set the RM size. (create_range_type): New function. (create_param_decl): Build a regular integer type first and then set the RM bounds for the extra subtype. (unchecked_convert): Remove kludge for 'Valid. * gcc-interface/utils2.c (build_binary_op) <ARRAY_RANGE_REF>: Convert the index to sizetype instead of TYPE_DOMAIN. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147563 138bc75d-0d04-0410-961f-82ee72b054a4
* * fold-const.c (fold_binary): Do not fold multiplication by 1 orjsm282009-05-081-1/+6
| | | | | | | | | | | -1 for complex floating-point types if honoring signed zeros. testsuite: * gcc.dg/torture/complex-sign-mul-minus-one.c, gcc.dg/torture/complex-sign-mul-one.c: New tests. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147295 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-04-28 Richard Guenther <rguenther@suse.de>rguenth2009-04-281-2/+3
| | | | | | | | | | | PR middle-end/39937 * fold-const.c (fold_binary): Use distribute_real_division only on float types. * gfortran.fortran-torture/compile/pr39937.f: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146901 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/:ian2009-04-241-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice. (record_dead_and_set_regs): Likewise. * df.h (struct df_mw_hardreg): Change flags field to int. (struct df_base_ref): Likewise. (struct df): Change changeable_flags field to int. * df-scan.c (df_defs_record): Change clobber_flags to int. * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum constants rather than #define macros. (enum dwarf_attribute, enum dwarf_location_atom): Likewise. (enum dwarf_type, enum dwarf_endianity_encoding): Likewise. (enum dwarf_calling_convention): Likewise. (enum dwarf_line_number_x_ops): Likewise. (enum dwarf_call_frame_info): Likewise. (enum dwarf_source_language): Likewise. * dwarf2out.c (int_loc_descriptor): Add cast to enum type. (add_calling_convention_attribute): Likewise. * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type. (combine_comparisons): Change compcode to int. Add cast to enum type. * genrecog.c (maybe_both_true_2): Change c to int. (write_switch): Likewise. Add cast to enum type. * gimplify.c (gimplify_omp_for): Handle return values from gimplify_expr using MIN rather than bitwise or. (gimplify_expr): Add cast to enum type. * ipa-prop.c (update_jump_functions_after_inlining): Change IPA_BOTTOM to IPA_JF_UNKNOWN. * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int. Add casts to enum type. (setup_cover_and_important_classes): Change cl to int. Add casts to enum type. (setup_class_translate): Change cl and mode to int. (ira_init_once): Change mode to int. (free_register_move_costs): Likewise. (setup_prohibited_mode_move_regs): Add casts to enum type. * langhooks.c (add_builtin_function_common): Rework assertion that value fits bitfield. * mcf.c (add_fixup_edge): Change type parameter to edge_type. * omega.c (omega_do_elimination): Avoid math on enum types. * optabs.c (expand_vec_shift_expr): Remove casts to int. * opts.c (set_debug_level): Change 2 to enum constant. Use new int local to handle integral_argment value. * regmove.c (try_auto_increment): Change PUT_MODE to PUT_REG_NOTE_KIND. * reload.c (push_secondary_reload): Add casts to enum type. (secondary_reload_class, find_valid_class): Likewise. * reload1.c (emit_input_reload_insns): Likewise. * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise. * sel-sched.c (init_hard_regs_data): Change cur_mode to int. * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum constant. * tree.c (build_common_builtin_nodes): Add casts to enum type. * tree-complex.c (complex_lattice_t): Typedef to int rather than enum type. (expand_complex_libcall): Add casts to enum type. * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant. * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code with ERROR_MARK, not NUM_TREE_CODES. (vect_create_epilog_for_reduction): Likewise. (vectorizable_reduction): Don't initialize epiloc_reduc_code. When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES. * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to enum machine_mode. * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to vect_unused_in_loop. Change 0 to loop_vect. * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type. * var-tracking.c (get_init_value): Change return type to enum var_init_status. * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T. * config/arm/arm.c (fp_model_for_fpu): Change to array to enum arm_fp_model. (arm_override_options): Add casts to enum type. (arm_emit_tls_decoration): Likewise. * config/i386/i386.c (ix86_function_specific_restore): Add casts to enum type. * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise. * config/ia64/ia64.c (ia64_expand_compare): Change magic to int. * config/rs6000/rs6000.c (rs6000_override_options): Add casts to enum type. * config/s390/s390.c (code_for_builtin_64): Change to array of enum insn_code. (code_for_builtin_31): Likewise. (s390_expand_builtin): Change code_for_builtin to enum insn_code const *. * config/sparc/sparc.c (sparc_override_options): Change value field in struct code_model to enum cmodel. In initializer change 0 to NULL and add cast to enum type. * c-typeck.c (build_modify_expr): Add lhs_origtype parameter. Change all callers. Issue a -Wc++-compat warning using lhs_origtype if necessary. (convert_for_assignment): Issue -Wc++-compat warnings about invalid conversions to enum type on assignment. * c-common.h (build_modify_expr): Update declaration. gcc/cp/: * call.c (build_temp): Change 0 to enum constant. * cp-tree.h (cp_lvalue_kind): Typedef to int rather than enum type. * cp-gimplify.c (cp_gimplify_expr): Add cast to enum type. * decl2.c (constrain_visibility): Likewise. * parser.c (cp_lexer_get_preprocessor_token): Likewise. (cp_parser_flags): Typedef to int rather than enum type. (cp_parser_expression_stack_entry): Change prec field to enum cp_parser_prec. * typeck.c (build_modify_expr): Add lhs_origtype parameter. Change all callers. gcc/fortran/: * gfortran.h (enum gfc_symbol_type): New named enum type, broken out of struct gfc_symbol. (struct gfc_symbol): Use enum gfc_symbol_type. (enum gfc_array_ref_dimen_type): New named enum type, broken out of struct gfc_array_ref). (struct gfc_array_ref): Use enum gfc_array_ref_dimen_type. (mod_pointee_as): Update declaration. * decl.c (add_global_entry): Change type to enum gfc_symbol_type. (gfc_mod_pointee_as): Change return type to "match". * module.c (mio_array_ref): Add cast to enum type. (mio_symbol): Likewise. * resolve.c (resolve_global_procedure): Change type to enum gfc_symbol_type. * trans-io.c (gfc_build_st_parameter): Change type to unsigned int. gcc/java/: * jcf-parse.c (handle_constant): Add cast to enum type. gcc/objc/: * objc-act.c (get_super_receiver): Update calls to build_modify_expr to pass new argument. gcc/testsuite/: * gcc.dg/Wcxx-compat-4.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146735 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-04-24 Paolo Bonzini <bonzini@gnu.org>bonzini2009-04-241-10/+13
| | | | | | | | | | | | | | | | | PR middle-end/39867 * fold-const.c (fold_cond_expr_with_comparison): When folding > and >= to MAX, make sure the MAX uses the same type as the comparison operands. testsuite: 2009-04-24 Paolo Bonzini <bonzini@gnu.org> PR middle-end/39867 * gcc.dg/pr39867.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146695 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c/39855jakub2009-04-221-1/+2
| | | | | | | | | | * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing into 0, use omit_one_operand. * gcc.dg/torture/pr39855.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146617 138bc75d-0d04-0410-961f-82ee72b054a4
* * c-common.c (c_common_truthvalue_conversion): Use LOCATION to buildebotcazou2009-04-211-45/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | NE_EXPR operations as well. * c-parser.c (c_parser_condition): Do not set location information on the condition. (c_parser_conditional_expression): Likewise. (c_parser_binary_expression): Set location information on operators. * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if TRUTH_NOT_EXPR has been folded. * fold-const.c (fold_truth_not_expr): Copy location information from the incoming expression to the outgoing one. * gimplify.c (shortcut_cond_r): Add locus parameter. Pass it to recursive calls on the LHS of the operator but pass that of the operator to recursive calls on the RHS of the operator. Set it on the COND_EXPR. (shortcut_cond_expr): Set the locus of the operator on the second COND_EXPR and that of the expression on the first in degenerate cases. Pass the locus of the expression to calls to shortcut_cond_r. Set the locus of the 'then' block on the associated jump, if any. (gimplify_boolean_expr): Add locus parameter. Set it on the COND_EXPR. (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer expression to call to gimplify_boolean_expr. ada/ * gcc-interface/trans.c (gnat_to_gnu): Do not overwrite location info. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146532 138bc75d-0d04-0410-961f-82ee72b054a4
* * fold-const.c (build_range_check): Properly deal with enumeral andebotcazou2009-04-121-10/+15
| | | | | | | boolean base types. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145988 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-04-10 Paolo Bonzini <bonzini@gnu.org>bonzini2009-04-101-2/+6
| | | | | | | | | PR middle-end/39701 * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static variables as non-NULL even with -fdelete-null-pointer-checks. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145927 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-04-09 Paolo Bonzini <bonzini@gnu.org>bonzini2009-04-091-2/+2
| | | | | | | | | | | | | | | | | * expmed.c (expand_divmod): Always use a comparison for a division by a large unsigned integer. * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls for things others than variables or functions as nonzero. testsuite: 2009-04-09 Paolo Bonzini <bonzini@gnu.org> * gcc.dg/pr27150-1.c: Change to a link test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145846 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-04-08 Bingfeng Mei <bmei@broadcom.com>meibf2009-04-081-0/+45
| | | | | | | | * fold-const.c (const_binop): Combine two VECTOR_CST under operation CODE to produce a new one. Add a prototype to use fold_convert_const git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145731 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-04-01 Richard Guenther <rguenther@suse.de>rguenth2009-04-011-1/+5
| | | | | | | | | | * fold-const.c (fold_plusminus_mult_expr): Do not fold i * 4 + 2 to (i * 2 + 1) * 2. * gcc.dg/fold-plusmult-2.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145403 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-03-31 Richard Guenther <rguenther@suse.de>rguenth2009-03-311-11/+22
| | | | | | | | | | | | PR middle-end/31029 * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for equality comparisons. Fold C - X CMP X if C % 2 == 1. * gcc.dg/fold-compare-4.c: New testcase. * gcc.dg/fold-compare-5.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145345 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-03-31 Richard Guenther <rguenther@suse.de>rguenth2009-03-311-1/+1
| | | | | | | | | | | | | * tree.h (div_if_zero_remainder): Declare. * fold-const.c (div_if_zero_remainder): Export. * tree-ssa-forwprop.c (forward_propagate_addr_into_variable_array_index): Handle constant array index addition outside of the variable index. * gcc.dg/tree-ssa/forwprop-12.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145343 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-03-30 Paolo Bonzini <bonzini@gnu.org>bonzini2009-03-301-32/+5
| | | | | | | | | | | | | * fold-const.c (const_binop, fold_convert_const_real_from_fixed, fold_convert_const_fixed_from_fixed, fold_convert_const_fixed_from_int, fold_convert_const_fixed_from_real, fold_negate_const): Do not set TREE_CONSTANT_OVERFLOW. * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW. * tree.h (TREE_CONSTANT_OVERFLOW): Delete. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145281 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-03-28 Martin Jambor <mjambor@suse.cz>jamborm2009-03-281-5/+13
| | | | | | | | | | | | | | | | | * fold-const.c (get_pointer_modulus_and_residue): New parameter allow_func_align. (fold_binary): Allow function decl aligment consideration is the second argument is integer constant one. * tree-ssa-forwprop.c (simplify_bitwise_and): New function. (tree_ssa_forward_propagate_single_use_vars): Handle assing statements with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and. * g++.dg/tree-ssa/fwprop-align.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145203 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-03-28 Richard Guenther <rguenther@suse.de>rguenth2009-03-281-2/+0
| | | | | | | | | | | | | | PR tree-optimization/37795 * tree.h (combine_comparisons): Declare. * fold-const.c (combine_comparisons): Export. * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive comparisons. (ifcombine_iforif): Use combine_comparisons. * gcc.dg/tree-ssa/ssa-ifcombine-7.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145170 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-03-27 Richard Guenther <rguenther@suse.de>rguenth2009-03-271-46/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gimplify.c (mark_addressable): Export. * tree-flow.h (mark_addressable): Declare. * tree-ssa-loop-manip.c (create_iv): Mark the base addressable. * tree-ssa.c (verify_phi_args): Verify that address taken variables have TREE_ADDRESSABLE set. 2009-03-27 Richard Guenther <rguenther@suse.de> * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ... (build_fold_addr_expr_with_type): ... this. Remove in_fold handling. Do not mark decls TREE_ADDRESSABLE. (build_fold_addr_expr): Adjust. (fold_addr_expr): Remove. (fold_unary): Use build_fold_addr_expr. (fold_comparison): Likewise. (split_address_to_core_and_offset): Likewise. * coverage.c (tree_coverage_counter_addr): Mark the array decl TREE_ADDRESSABLE. * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs. (gimplify_modify_expr_to_memcpy): Mark source and destination addressable. * omp-low.c (create_omp_child_function): Mark the object decl TREE_ADDRESSABLE. (lower_rec_input_clauses): Mark the var we take the address of TREE_ADDRESSABLE. (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE. fortran/ * trans-array.c (gfc_conv_descriptor_data_addr): Use gfc_build_addr_expr instead of build_fold_addr_expr. (gfc_trans_allocate_array_storage, gfc_trans_array_constructor_value, gfc_trans_constant_array_constructor, gfc_conv_array_data, gfc_conv_expr_descriptor, gfc_conv_array_parameter): Likewise. * trans-expr.c (gfc_conv_missing_dummy, gfc_conv_variable, gfc_conv_function_val, gfc_conv_operator_assign, gfc_conv_subref_array_arg, gfc_conv_function_call, gfc_conv_expr_reference, gfc_trans_scalar_assign): Likewise. * trans-intrinsic.c (gfc_conv_intrinsic_exponent, gfc_conv_intrinsic_ctime, gfc_conv_intrinsic_fdate, gfc_conv_intrinsic_ttynam, gfc_conv_intrinsic_minmax_char, gfc_conv_intrinsic_fraction, gfc_conv_intrinsic_spacing, gfc_conv_intrinsic_rrspacing, gfc_conv_intrinsic_set_exponent, gfc_conv_intrinsic_array_transfer, gfc_conv_intrinsic_transfer, gfc_conv_intrinsic_si_kind, gfc_conv_intrinsic_trim): Likewise. * trans-io.c (gfc_trans_io_runtime_check, set_parameter_ref, gfc_convert_array_to_string, gfc_trans_open, gfc_trans_close, build_filepos, gfc_trans_inquire, gfc_trans_wait, nml_get_addr_expr, transfer_namelist_element, build_dt, gfc_trans_dt_end, transfer_array_component, transfer_expr, transfer_array_desc, gfc_trans_transfer): Likewise. * trans-stmt.c (gfc_trans_allocate, gfc_trans_deallocate): Likewise. * trans.c (gfc_build_addr_expr): Mark the base of the address TREE_ADDRESSABLE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145142 138bc75d-0d04-0410-961f-82ee72b054a4
* ChangeLog:uweigand2009-03-111-1/+2
| | | | | | | | | | | | | * fold-const.c (fold_comparison): Only call fold_inf_compare if the mode supports infinities. testsuite/ChangeLog: * gcc.c-torture/execute/ieee/inf-3.c: New test. * gcc.c-torture/execute/ieee/inf-2.c: Fix typo. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@144779 138bc75d-0d04-0410-961f-82ee72b054a4
* * fold-const.c (fold_unary): Fix comment.ebotcazou2009-03-091-6/+6
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@144723 138bc75d-0d04-0410-961f-82ee72b054a4
* 2008-01-23 Paolo Bonzini <bonzini@gnu.org>bonzini2009-01-231-0/+18
| | | | | | | | | | | | | | | | | | | PR tree-optimization/38932 * fold-const.c (fold_unary_no_overflow): New. * tree.h (fold_unary_no_overflow): Declare. * tree-ssa-ccp.c (ccp_fold): Use fold_unary_no_overflow. * tree-ssa-sccvn.c (visit_reference_op_load, simplify_unary_expression): Likewise. testsuite: 2008-01-23 Paolo Bonzini <bonzini@gnu.org> PR tree-optimization/38932 * gcc.dg/pr38932.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143588 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-01-16 Richard Guenther <rguenther@suse.de>rguenth2009-01-161-14/+0
| | | | | | | | | | | | | | | | | | PR tree-optimization/38835 PR middle-end/36227 * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT) and INT + PTR -> (INT)(PTR p+ INT) folding. * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR. java/ * builtins.c (build_addr_sum): Use POINTER_PLUS_EXPR. * gcc.c-torture/execute/pr36227.c: New testcase. * gcc.dg/tree-ssa/foldaddr-1.c: XFAIL. * g++.dg/init/const7.C: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143442 138bc75d-0d04-0410-961f-82ee72b054a4
* Update Copyright year.jakub2009-01-091-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143203 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/38771jakub2009-01-091-3/+7
| | | | | | | | | | * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR, fold_convert arg0 operands to TREE_TYPE (op0) first. * gcc.c-torture/compile/pr38771.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143202 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-01-07 Richard Guenther <rguenther@suse.de>rguenth2009-01-071-5/+11
| | | | | | | | | | PR middle-end/38751 * fold-const.c (extract_muldiv): Remove obsolete comment. (fold_plusminus_mult_expr): Undo MINUS_EXPR to PLUS_EXPR canonicalization for the canonicalization. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143152 138bc75d-0d04-0410-961f-82ee72b054a4
* 2008-12-30 Richard Guenther <rguenther@suse.de>rguenth2008-12-301-6/+6
| | | | | | | | | | PR middle-end/38564 * fold-const.c (fold_comparison): Use the correct result type. * gcc.c-torture/compile/pr38564.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@142961 138bc75d-0d04-0410-961f-82ee72b054a4
* 2008-12-23 Andrew Pinski <pinski@gmail.com>pinskia2008-12-231-3/+4
| | | | | | | | | | | | | | | | PR middle-end/38590 * fold-const.c (fold_binary): Call fold_convert on arguments to fold_build2 for negative divide optimization. 2008-12-23 Andrew Pinski <pinskia@gmail.com> PR middle-end/38590 * gcc.c-torture/compile/pr38590-1.c: New testcase. * gcc.c-torture/compile/pr38590-2.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@142906 138bc75d-0d04-0410-961f-82ee72b054a4