aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2014-12-03builtins.c (fold_builtin_fpclassify): Change to take array of arguments ↵Richard Biener7-84/+84
instead of CALL_EXPR tree. 2014-12-03 Richard Biener <rguenther@suse.de> * builtins.c (fold_builtin_fpclassify): Change to take array of arguments instead of CALL_EXPR tree. (MAX_ARGS_TO_FOLD_BUILTIN): Remove. (fold_builtin_n): Dispatch to fold_builtin_varargs. (fold_call_expr): Always use fold_builtin_n. (fold_builtin_call_array): Change to not build the unfolded call, always use fold_builtin_n. (fold_builtin_varargs): Change to take array of arguments instead of CALL_EXPR tree. (fold_call_stmt): Always use fold_builtin_n. * tree.c (build_call_expr_loc_array): Use fold_build_call_array_loc. * fold-const.c (fold_build_call_array_loc): Build the call if fold_builtin_call_array returned NULL_TREE. * gimple-fold.c (gimple_fold_stmt_to_constant_1): Do not build a CALL_EXPR and use fold_builtin_call_array instead of fold_call_expr. cp/ * constexpr.c (cxx_eval_builtin_function_call): Use fold_build_call_array_loc. From-SVN: r218311
2014-12-03[AArch64] Remove/merge redundant iteratorsAlan Lawrence4-158/+168
* config/aarch64/aarch64-simd.md (aarch64_simd_dup<mode>, orn<mode>3, bic<mode>3, add<mode>3, sub<mode>3, neg<mode>2, abs<mode>2, and<mode>3, ior<mode>3, xor<mode>3, one_cmpl<mode>2, aarch64_simd_lshr<mode> ,arch64_simd_ashr<mode>, aarch64_simd_imm_shl<mode>, aarch64_simd_reg_sshl<mode>, aarch64_simd_reg_shl<mode>_unsigned, aarch64_simd_reg_shr<mode>_signed, ashl<mode>3, lshr<mode>3, ashr<mode>3, vashl<mode>3, reduc_plus_scal_<mode>, aarch64_vcond_internal<mode><mode>, vcondu<mode><mode>, aarch64_cm<optab><mode>, aarch64_cmtst<mode>): Change VDQ to VDQ_I. (mul<mode>3): Change VDQM to VDQ_BHSI. (aarch64_simd_vec_set<mode>,vashr<mode>3, vlshr<mode>3, vec_set<mode>, aarch64_mla<mode>, aarch64_mls<mode>, <su><maxmin><mode>3, aarch64_<sur>h<addsub><mode>): Change VQ_S to VDQ_BHSI. (*aarch64_<su>mlal<mode>, *aarch64_<su>mlsl<mode>, aarch64_<ANY_EXTEND:su><ADDSUB:optab>l<mode>, aarch64_<ANY_EXTEND:su><ADDSUB:optab>w<mode>, aarch64_<sur>shll_n<mode>): Change VDW to VD_BHSI. (*aarch64_combinez<mode>, *aarch64_combinez_be<mode>): Change VDIC to VD_BHSI. * config/aarch64/aarch64-simd-builtins.def (saddl, uaddl, ssubl, usubl, saddw, uaddw, ssubw, usubw, shadd, uhadd, srhadd, urhadd, sshll_n, ushll_n): Change BUILTIN_VDW to BUILTIN_VD_BHSI. * config/aarch64/iterators.md (SDQ_I, VDQ, VQ_S, VSDQ_I_BHSI, VDQM, VDW, VDIC, VDQQHS): Remove. (Vwtype): Update comment (changing VDW to VD_BHSI). From-SVN: r218310
2014-12-03re PR tree-optimization/14541 ([tree-ssa] built-in math functions are not ↵Richard Biener3-97/+103
fully optimized at tree level) 2014-12-03 Richard Biener <rguenther@suse.de> PR middle-end/14541 * builtins.c (fold_builtin_logarithm): Implement simplifications ... * match.pd: ... here as patterns. From-SVN: r218308
2014-12-03p5600.md (define_automaton, [...]): Replace p5600_agen_pipe and ↵Prachi Godbole2-6/+13
p5600_alu_pipe with p5600_agen_alq_pipe. 2014-12-03 Prachi Godbole <prachi.godbole@imgtec.com> * config/mips/p5600.md (define_automaton, define_cpu_unit): Replace p5600_agen_pipe and p5600_alu_pipe with p5600_agen_alq_pipe. (p5600_int_arith_1, p5600_int_arith_2, p5600_int_arith_4): Change reservation order. From-SVN: r218307
2014-12-03Rename fuse-caller-saveTom de Vries28-49/+89
2014-12-03 Tom de Vries <tom@codesourcery.com> PR rtl-optimization/63957 * doc/invoke.texi: Replace -fuse-caller-save with -fipa-ra. * final.c (rest_of_handle_final): Replace flag_use_caller_save with flag_ipa_ra. (get_call_reg_set_usage): Same. * lra-assigns.c (lra_assign): Same. * lra-constraints.c (need_for_call_save_p): Same. * lra-lives.c (process_bb_lives): Same. * lra.c (lra): Same. * calls.c (expand_call): Same. (emit_library_call_value_1): Same. * config/arm/arm.c (arm_option_override): Same. * opts.c (default_options_table): Replace OPT_fuse_caller_save with OPT_fipa_ra. * target.def (call_fusage_contains_non_callee_clobbers): Replace fuse-caller-save with fipa-ra. * doc/tm.texi (TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS): Same. * common.opt: Same. * gcc.dg/ira-shrinkwrap-prep-1.c: Replace -fno-use-caller-save with -fno-ipa-ra. * gcc.dg/ira-shrinkwrap-prep-2.c: Same. * gcc.target/aarch64/aapcs64/aapcs64.exp: Same. * gcc.dg/fuse-caller-save.c: Replace -fuse-caller-save with -fipa-ra. * gcc.target/aarch64/fuse-caller-save.c: Same. * gcc.target/arm/fuse-caller-save.c: Same. * gcc.target/i386/fuse-caller-save-rec.c: Same. * gcc.target/i386/fuse-caller-save-xmm-run.c: Same. * gcc.target/i386/fuse-caller-save-xmm.c: Same. * gcc.target/i386/fuse-caller-save.c: Same. * gcc.target/mips/fuse-caller-save-micromips.c: Same. * gcc.target/mips/fuse-caller-save-mips16.c: Same. * gcc.target/mips/fuse-caller-save.c: Same. * gcc.target/mips/mips.exp: Replace use-caller-save with ipa-ra in -ffoo/-fno-foo options. From-SVN: r218305
2014-12-03Improve optimization of ASan checks.Yury Gribov2-91/+156
2014-12-03 Yury Gribov <y.gribov@samsung.com> gcc/ * sanopt.c (maybe_get_single_definition): New function. (maybe_get_dominating_check): Ditto. (can_remove_asan_check): Ditto. (struct tree_map_traits): New struct. (struct sanopt_ctx): Use custom traits for asan_check_map. (maybe_optimize_ubsan_null_ifn): Move code to maybe_get_dominating_check. (maybe_optimize_asan_check_ifn): Move code and take non-SSA expressions into account when optimizing. (sanopt_optimize_walker): Optimize ASan checks even when recovering. From-SVN: r218304
2014-12-03constraints.md (Yr): New.Ilya Enkovich8-185/+271
gcc/ * config/i386/constraints.md (Yr): New. * config/i386/i386.h (reg_class): Add NO_REX_SSE_REGS. (REG_CLASS_NAMES): Likewise. (REG_CLASS_CONTENTS): Likewise. * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add alternatives which use only NO_REX_SSE_REGS. (vec_set<mode>_0): Likewise. (*vec_setv4sf_sse4_1): Likewise. (sse4_1_insertps): Likewise. (*sse4_1_extractps): Likewise. (*sse4_1_mulv2siv2di3<mask_name>): Likewise. (*<sse4_1_avx2>_mul<mode>3<mask_name>): Likewise. (*sse4_1_<code><mode>3<mask_name>): Likewise. (*sse4_1_<code><mode>3): Likewise. (*sse4_1_eqv2di3): Likewise. (sse4_2_gtv2di3): Likewise. (*vec_extractv4si): Likewise. (*vec_concatv2si_sse4_1): Likewise. (vec_concatv2di): Likewise. (<sse4_1>_blend<ssemodesuffix><avxsizesuffix>): Likewise. (<sse4_1>_blendv<ssemodesuffix><avxsizesuffix>): Likewise. (<sse4_1>_dp<ssemodesuffix><avxsizesuffix>): Likewise. (<vi8_sse4_1_avx2_avx512>_movntdqa): Likewise. (<sse4_1_avx2>_mpsadbw): Likewise. (<sse4_1_avx2>packusdw<mask_name>): Likewise. (<sse4_1_avx2>_pblendvb): Likewise. (sse4_1_pblendw): Likewise. (sse4_1_phminposuw): Likewise. (sse4_1_<code>v8qiv8hi2<mask_name>): Likewise. (sse4_1_<code>v4qiv4si2<mask_name>): Likewise. (sse4_1_<code>v4hiv4si2<mask_name>): Likewise. (sse4_1_<code>v2qiv2di2<mask_name>): Likewise. (sse4_1_<code>v2hiv2di2<mask_name>): Likewise. (sse4_1_<code>v2siv2di2<mask_name>): Likewise. (sse4_1_ptest): Likewise. (<sse4_1>_round<ssemodesuffix><avxsizesuffix>): Likewise. (sse4_1_round<ssescalarmodesuffix>): Likewise. * config/i386/subst.md (mask_prefix4): New. * config/i386/x86-tune.def (X86_TUNE_AVOID_4BYTE_PREFIXES): New. gcc/testsuites/ * gcc.target/i386/sse2-init-v2di-2.c: Adjust to changed vec_concatv2di template. From-SVN: r218303
2014-12-03re PR rtl-optimization/52714 (ICE in fixup_reorder_chain, at cfglayout.c:880)Segher Boessenkool4-3/+52
PR rtl-optimization/52714 * combine.c (try_combine): Allow combining two insns into two new insns if at least one of those is a noop. gcc/testsuite/ * gcc.target/m68k/pr52714.c: New testcase. From-SVN: r218302
2014-12-03target.def (fusion_priority): Wrap code with @smallexample.Bin Cheng3-16/+33
* target.def (fusion_priority): Wrap code with @smallexample. * doc/tm.texi: Regenerated. From-SVN: r218301
2014-12-03Daily bump.GCC Administrator1-1/+1
From-SVN: r218299
2014-12-03error.c (warnings_not_errors): Use bool.Tobias Burnus4-8/+17
2014-12-02 Tobias Burnus <burnus@net-b.de> Manuel López-Ibáñez <manu@gcc.gnu.org> * error.c (warnings_not_errors): Use bool. (gfc_clear_error): Update. (gfc_get_errors): Ditto. Use bool argument. * gfortran.h (gfc_get_errors): Update prototype. * resolve.c (resolve_global_procedure): Update call. Co-Authored-By: Manuel López-Ibáñez <manu@gcc.gnu.org> From-SVN: r218296
2014-12-02libcpp uses diagnostic->override_column to give a custom column number to ↵Manuel López-Ibáñez2-0/+7
diagnostics. libcpp uses diagnostic->override_column to give a custom column number to diagnostics. This is taken into account when building the prefix, but it was missing when placing the caret. 2014-12-03 Manuel López-Ibáñez <manu@gcc.gnu.org> * diagnostic.c (diagnostic_show_locus): Honor override_column when placing the caret. From-SVN: r218295
2014-12-02asan: support for globals in kernelDmitry Vyukov2-5/+17
2014-12-02 Dmitry Vyukov <dvyukov@google.com> * asan.c: (asan_finish_file): Use default priority for constructors in kernel mode. From-SVN: r218281
2014-12-02avx512ifma-vpmaddhuq-2.c: Define AVX512IFMA.Uros Bizjak7-0/+21
* gcc.target/i386/avx512ifma-vpmaddhuq-2.c: Define AVX512IFMA. * gcc.target/i386/avx512ifma-vpmaddluq-2.c: Ditto. * gcc.target/i386/avx512vbmi-vpermb-2.c: Define AVX512VBMI. * gcc.target/i386/avx512vbmi-vpermi2b-2.c: Ditto. * gcc.target/i386/avx512vbmi-vpermt2b-2.c: Ditto. * gcc.target/i386/avx512vbmi-vpmultishiftqb-2.c: Ditto. From-SVN: r218280
2014-12-02constexpr.c (cxx_eval_check_shift_p): New function.Marek Polacek6-7/+176
* constexpr.c (cxx_eval_check_shift_p): New function. (cxx_eval_binary_expression): Call it. Set NON_CONSTANT_P if it returns true. * g++.dg/cpp0x/constexpr-shift1.C: New test. * g++.dg/cpp1y/constexpr-shift1.C: New test. * g++.dg/ubsan/pr63956.C: Add dg-errors. From-SVN: r218279
2014-12-02re PR target/64115 (ICE: : in rs6000_delegitimize_address, at ↵Ulrich Weigand2-18/+6
config/rs6000/rs6000.c:7051) PR target/64115 * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove invalid UNSPEC_TOCREL sanity check under ENABLE_CHECKING. From-SVN: r218273
2014-12-02Stop only if there aren't any usable algorithmsH.J. Lu4-1/+23
When searching for an usable algorithm with -minline-all-stringops, decide_alg stops when it sees libcall even if there is a usable algorithm. It goes into an infinite loop. This patch changes decide_alg to stop searching only if there aren't any usable algorithms. Testd on Linux/x86-64. gcc/ PR target/64108 * config/i386/i386.c (decide_alg): Stop only if there aren't any usable algorithms. gcc/testsuite/ PR target/64108 * gcc.target/i386/memset-strategy-2.c: New test. From-SVN: r218272
2014-12-02re PR rtl-optimization/63718 (ARM Thumb1 bootstrap fail after ↵Tom de Vries2-0/+18
fuse-caller-save info in cprop-hardreg) 2014-12-02 Tom de Vries <tom@codesourcery.com> PR rtl-optimization/63718 * config/arm/arm.c (arm_option_override): Disable fuse-caller-save for Thumb1. From-SVN: r218271
2014-12-02match.pd: When combining divisions exclude the degenerate case involving ↵Richard Biener4-1/+27
INT_MIN from... 2014-12-02 Richard Biener <rguenther@suse.de> * match.pd: When combining divisions exclude the degenerate case involving INT_MIN from overflow handling. * gcc.dg/torture/20141202-1.c: New testcase. From-SVN: r218269
2014-12-02Add a test for PR ipa/63814H.J. Lu2-0/+34
PR ipa/63814 * g++.dg/ipa/pr63814.C: New test. From-SVN: r218268
2014-12-02[AArch64/testsuite] Add missing testcaseJiong Wang1-0/+20
Add the missing testcase. (forget svn add in previous commit ...) From-SVN: r218267
2014-12-02[PATCH] Improve spillcost of literal pool loadsWilco Dijkstra3-3/+10
2014-12-02 Wilco Dijkstra <wdijkstr@arm.com> gcc/ ira-costs.c (scan_one_insn): Improve spill cost adjustment. gcc/testsuite gcc.target/aarch64/remat1.c: New testcase. From-SVN: r218266
2014-12-02re PR ipa/63814 (g++.dg/ipa/pr61160-1.C fails with -m32 -fPIC)Martin Jambor2-43/+65
2014-12-02 Martin Jambor <mjambor@suse.cz> PR ipa/63814 * ipa-cp.c (same_node_or_its_all_contexts_clone_p): New function. (cgraph_edge_brings_value_p): New parameter dest, use same_node_or_its_all_contexts_clone_p and check availability. (cgraph_edge_brings_value_p): Likewise. (get_info_about_necessary_edges): New parameter dest, pass it to cgraph_edge_brings_value_p. Update caller. (gather_edges_for_value): Likewise. (perhaps_add_new_callers): Use cgraph_edge_brings_value_p to check both the destination and availability. From-SVN: r218265
2014-12-02re PR target/64113 (Gcc on Alpha: Error: No lda !gpdisp!282 was found)Uros Bizjak2-24/+54
PR target/64113 * config/alpha/alpha.md (call_value_osf_tlsgd): Do not split insn using post-reload splitter. Use peephole2 pass instead. (call_value_osf_tlsldm): Ditto. (TLS_CALL): New int iterator. (tls): New int attribute. (call_value_osf_<tls>): Merge insn pattern from call_value_osf_tlsgd and call_value_tlsldm using TLS_CALL int iterator. From-SVN: r218264
2014-12-02genmatch.c: Include hash-set.h.Richard Biener2-21/+91
2014-12-02 Richard Biener <rguenther@suse.de> Prathamesh Kulkarni <bilbotheelffriend@gmail.com> * genmatch.c: Include hash-set.h. (fatal_at): Add source_location overload. (parser::record_operlist): New method. (parser::push_simplify): Likewise. (parser::oper_lists_set): New member. (parser::oper_lists): Likewise. (parser::parse_operation): Record seen operator list references. (parser::parse_c_expr): Likewise. (parser::parse_simplify): Init oper_lists_set and oper_lists and use push_simplify. (parser::parser): Init oper_lists_set and oper_lists. Co-Authored-By: Prathamesh Kulkarni <bilbotheelffriend@gmail.com> From-SVN: r218261
2014-12-02match.pd: Restrict division combining to trunc_div and exact_div.Richard Biener2-2/+8
2014-12-02 Richard Biener <rguenther@suse.de> * match.pd: Restrict division combining to trunc_div and exact_div. From-SVN: r218260
2014-12-02re PR fortran/64137 (Fortran FE builds invalid GENERIC)Richard Biener2-2/+9
2014-12-02 Richard Biener <rguenther@suse.de> PR fortran/64137 * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Check proper expressions type, use proper type for computing -Huge - 1. From-SVN: r218259
2014-12-02sparc.c (sparc_atomic_assign_expand_fenv): Remove NULL last argument from ↵Jakub Jelinek12-29/+45
create_tmp_var calls. * config/sparc/sparc.c (sparc_atomic_assign_expand_fenv): Remove NULL last argument from create_tmp_var calls. * config/mips/mips.c (mips_atomic_assign_expand_fenv): Likewise. * config/arm/arm-builtins.c (arm_atomic_assign_expand_fenv): Likewise. * config/i386/i386.c (add_condition_to_bb, ix86_atomic_assign_expand_fenv): Likewise. * config/mep/mep.c (mep_gimplify_va_arg_expr): Likewise. * config/xtensa/xtensa.c (xtensa_gimplify_va_arg_expr): Likewise. * config/aarch64/aarch64-builtins.c (aarch64_atomic_assign_expand_fenv): Likewise. * config/stormy16/stormy16.c (xstormy16_gimplify_va_arg_expr): Likewise. * config/rs6000/rs6000.c (rs6000_atomic_assign_expand_fenv): Likewise. * config/alpha/alpha.c (alpha_atomic_assign_expand_fenv): Likewise. * config/sh/sh.c (sh_gimplify_va_arg_expr): Likewise. From-SVN: r218257
2014-12-02alpha.c (alpha_gimple_fold_builtin): Use gimple_build_assign instead of ↵Jakub Jelinek3-20/+16
gimple_build_assign_with_ops and swap the... * config/alpha/alpha.c (alpha_gimple_fold_builtin): Use gimple_build_assign instead of gimple_build_assign_with_ops and swap the order of first two arguments. * config/aarch64/aarch64-builtins.c (aarch64_gimple_fold_builtin): Likewise. Remove last NULL_TREE argument. From-SVN: r218256
2014-12-02Daily bump.GCC Administrator1-1/+1
From-SVN: r218254
2014-12-01re PR rtl-optimization/59278 (combine does not replace matched insn)Oleg Endo2-0/+24
testsuite/ PR rtl-optimization/59278 * gcc.target/sh/pr59278.c: New. From-SVN: r218251
2014-12-02re PR rtl-optimization/59278 (combine does not replace matched insn)Segher Boessenkool2-0/+8
PR rtl-optimization/59278 combine (reg_dead_at_p): Consider REG_UNUSED notes. From-SVN: r218250
2014-12-01* combine.c (try_combine): Use is_parallel_of_n_reg_sets some more.Segher Boessenkool2-26/+20
From-SVN: r218249
2014-12-01combine.c (is_parallel_of_n_reg_sets): New function.Segher Boessenkool2-0/+85
* combine.c (is_parallel_of_n_reg_sets): New function. (can_split_parallel_of_n_reg_sets): New function. (try_combine): If I2 is a PARALLEL of two SETs, split it into two insns if possible. From-SVN: r218248
2014-12-01re PR middle-end/64017 (Support ISL 0.14.0 (to fix ICE with ↵Tobias Burnus10-13/+130
gfortran.dg/graphite/pr42393.f90)) 2014-12-01 Tobias Burnus <burnus@net-b.de> Jack Howarth <howarth@bromo.med.uc.edu> PR middle-end/64017 * configure.ac * (ac_has_isl_schedule_constraints_compute_schedule): New check. * doc/install.texi (ISL): Permit ISL 0.14. * graphite-optimize-isl.c (getScheduleForBandList, * optimize_isl): Conditionally use ISL 0.13+ functions. * graphite-interchange.c: Make 'extern "C"' conditional. * graphite-isl-ast-to-gimple.c: Ditto. * graphite-poly.c: Ditto. * graphite-sese-to-poly.c: Ditto. * config.in: Regenerate. * gcc/configure: Regenerate. Co-Authored-By: Jack Howarth <howarth@bromo.med.uc.edu> From-SVN: r218247
2014-12-01Improvements to documentation of gcc_jit_context_releaseDavid Malcolm6-12/+126
gcc/jit/ChangeLog: * docs/examples/tut02-square.c (main): Release the context earlier, to show that this is possible. Update error-handling to avoid a double-release of the context, and to avoid releasing a NULL result. * docs/intro/tutorial02.rst: Discuss gcc_jit_context_release. * docs/topics/functions.rst (GCC_JIT_FUNCTION_EXPORTED): Emphasize * docs/topics/results.rst (gcc_jit_result): Mention that this controls the lifetimes of machine code functions. (gcc_jit_result_get_code): Spell out the requirements for this to succeed, and the lifetime of the result. (gcc_jit_result_release): Mention that this invalidates any code that was obtained from the result. * docs/_build/texinfo/libgccjit.texi: Regenerate. From-SVN: r218245
2014-12-01re PR c++/60859 (Value-initialization of scalar in aggregate yields "braces ↵Paolo Carlini4-3/+24
around scalar initializer") /cp 2014-12-01 Paolo Carlini <paolo.carlini@oracle.com> PR c++/60859 * decl.c (reshape_init_r): Do not reject value-initialization of scalar array element. /testsuite 2014-12-01 Paolo Carlini <paolo.carlini@oracle.com> PR c++/60859 * g++.dg/cpp0x/initlist88.C: New. From-SVN: r218244
2014-12-01PR jit/64018: Add description of error-handling to the JIT tutorialDavid Malcolm4-253/+373
gcc/jit/ChangeLog: PR jit/64018 * docs/intro/tutorial02.rst: Spell out lifetime of generated code. Add description of error-handling, taken in part from... * docs/topics/contexts.rst (Error-handling): Expand, and move some content to tutorial02.rst. * docs/_build/texinfo/libgccjit.texi: Regenerate. From-SVN: r218243
2014-12-01* combine.c (distribute_links): Handle multiple SETs.Segher Boessenkool2-15/+41
From-SVN: r218242
2014-12-01combine.c (struct insn_link): New field `regno'.Segher Boessenkool2-55/+104
* combine.c (struct insn_link): New field `regno'. (alloc_insn_link): New parameter `regno'. Use it. (find_single_use): Check the new field. (can_combine_def_p, can_combine_use_p): New functions. Split off from ... (create_log_links): ... here. Correct data type of `regno'. Adjust call to alloc_insn_link. (adjust_for_new_dest): Find regno, use it in call to alloc_insn_link. (try_combine): Check reg_used_between_p when combining a PARALLEL as earlier insn. Adjust call to alloc_insn_link. (distribute_links): Check the new field. From-SVN: r218241
2014-12-01PR jit/64020: Fixes to handling of builtinsDavid Malcolm11-254/+822
PR jit/64020 * docs/topics/types.rst (Standard types) Add new enum values to the table of enum gcc_jit_types: GCC_JIT_TYPE_COMPLEX_FLOAT, GCC_JIT_TYPE_COMPLEX_DOUBLE, GCC_JIT_TYPE_COMPLEX_LONG_DOUBLE. Widen the left-hand column so that GCC_JIT_TYPE_COMPLEX_LONG_DOUBLE will fit. * docs/_build/texinfo/libgccjit.texi: Regenerate. * jit-builtins.c: Include stringpool.h and jit-playback.h. Move everything out of the gcc::jit::recording namespace into just gcc::jit. (struct builtin_data): Add fields "fnclass", "attr", and "implicit_p". (DEF_BUILTIN): Update macro so populate the new fields. (builtins_manager::builtins_manager): Update for move out of recording namespace. Initialize the m_attributes array. (builtins_manager::get_builtin_function): Likewise. (builtins_manager::get_builtin_function_by_id): New function. (builtins_manager::make_builtin_function): Update for move out of recording namespace. Add fix for PR jit/64020 by detecting specific builtin ids and having them ensure that builtins for other ids are created as necessary. (builtins_manager::get_type): Update for move out of recording namespace. (builtins_manager::make_type): Likewise. Add some missing #undefs. (builtins_manager::make_primitive_type): Update for move out of recording namespace. Implement the three BT_COMPLEX_ cases and BT_DOUBLE_PTR. (builtins_manager::make_fn_type): Update for move out of recording namespace. (builtins_manager::make_ptr_type): Likewise. (builtins_manager::finish_playback): New function. (builtins_manager::get_class): New function. (builtins_manager::implicit_p): New function. (builtins_manager::get_attrs_tree): Two new functions. (builtins_manager::make_attrs_tree): New function. * jit-builtins.h: Move everything out of the gcc::jit::recording namespace into just gcc::jit. (enum built_in_attribute): New. (builtins_manager::builtins_manager): Update decl for namespace change. (builtins_manager::get_builtin_function): Likewise. (builtins_manager::get_class): New. (builtins_manager::implicit_p): New. (builtins_manager::get_attrs_tree): Two new functions. (builtins_manager::make_attrs_tree): New function. (builtins_manager::finish_playback): New. (builtins_manager::get_builtin_function_by_id): New. (builtins_manager::make_builtin_function): Update decl for namespace change. (builtins_manager::get_type): Likewise. (builtins_manager::make_type): Likewise. (builtins_manager::make_primitive_type): Likewise. (builtins_manager::make_fn_type): Likewise. (builtins_manager::make_ptr_type): Likewise. (builtins_manager): Likewise for fields. Add new field "m_attributes". * jit-common.h (NUM_GCC_JIT_TYPES): Update. (builtins_manager): Update forward decl to reflect namespace change. * jit-playback.c: Include attribs.h and jit-builtins.h. (gcc::jit::playback::context::get_tree_node_for_type): Add cases for the new COMPLEX_ types. (gcc::jit::playback::context::new_function): If creating a builtin, set the DECL_BUILT_IN_CLASS and attributes on the fndecl, and call set_builtin_decl. (gcc::jit::playback::context::replay): If we have a builtins_manager, call its finish_playback method when we're done. * jit-playback.h: (gcc::jit::playback::context::get_builtins_manager): New function. * jit-recording.c (gcc::jit::recording::context::get_builtins_manager): New function. (gcc::jit::recording::get_builtin_function): Use get_builtins_manager, in case we're a child context. (gcc::jit::recording::memento_of_get_type::dereference): Add the COMPLEX_ types. (gcc::jit::recording::memento_of_get_type::is_int): Likewise. (gcc::jit::recording::memento_of_get_type::is_float): Likewise. (gcc::jit::recording::memento_of_get_type::is_bool): Likewise. (get_type_strings): Likewise. * jit-recording.h (gcc::jit::recording::context::get_builtins_manager): New. * libgccjit.h (enum gcc_jit_types): Add GCC_JIT_TYPE_COMPLEX_FLOAT, GCC_JIT_TYPE_COMPLEX_DOUBLE, GCC_JIT_TYPE_COMPLEX_LONG_DOUBLE. From-SVN: r218240
2014-12-01jit-builtins.c: Fix segfault on unsupported builtinsDavid Malcolm2-3/+18
gcc/jit/ChangeLog: * jit-builtins.c (gcc::jit::recording::builtins_manager::get_builtin_function): Check for NULL return from make_builtin_function. (gcc::jit::recording::builtins_manager::make_builtin_function): Check for NULL return from get_type. From-SVN: r218239
2014-12-01jit-playback: Move dso-creation into its own functionDavid Malcolm3-71/+90
gcc/jit/ChangeLog: * jit-playback.c (gcc::jit::playback::context::compile): Move DSO creation code into... (gcc::jit::playback::context::convert_to_dso): New function. * jit-playback.h (gcc::jit::playback::context::convert_to_dso): New function. From-SVN: r218238
2014-12-01jit-playback: Move argv-creation to its own functionDavid Malcolm3-71/+95
gcc/jit/ChangeLog: * jit-playback.c (gcc::jit::playback::context::compile): Use an auto_vec<const char *> rather than a const char *[20] for the top-level argv, and move the logic to build it to... (gcc::jit::playback::context::make_fake_args): New function. * jit-playback.h (gcc::jit::playback::context::make_fake_args): New function. From-SVN: r218237
2014-12-01Move gcc_jit_result implementation to a new files jit-result.{h|c}David Malcolm7-60/+146
gcc/jit/ChangeLog: * Make-lang.in (jit_OBJS): Add jit/jit-result.o. * jit-playback.c: Include new header jit-result.h. (gcc::jit::result::result): Move to new file jit-result.c. (gcc::jit::result::~result): Likewise. (gcc::jit::playback::result): Likewise. * jit-recording.h (class gcc::jit::result): Move to new header jit-result.h. * jit-result.c: New file, to contain... (gcc::jit::result::result): Move here from jit-playback.c, removing erroneous "playback" namespace from comment. (gcc::jit::result::~result): Likewise. (gcc::jit::playback::result): Likewise. * jit-result.h: New file, to contain... (class gcc::jit::result): Move from jit-recording.h. * libgccjit.c: Include jit-result.h. (gcc_jit_result_get_code): Update comment to reflect move of implementation. (gcc_jit_result_release): Likewise. From-SVN: r218236
2014-12-01PR jit/63854: Fix leaks in toyvm.cDavid Malcolm3-10/+72
gcc/jit/ChangeLog: PR jit/63854 * docs/examples/tut04-toyvm/toyvm.c (toyvm_compiled_function): New typedef. (toyvm_compiled_func) Rename to... (toyvm_compiled_code) ...this. (struct toyvm_compiled_function): New struct. (toyvm_function_compile): Return a toyvm_compiled_function * rather than a toyvm_compiled_func, so that the caller can fully clean things up. Free "funcname". (test_script): Update for change to toyvm_function_compile. Clean up the toyvm_compiled_function. (main): Likewise. (docs/intro/tutorial04.rst): Update to reflect the above changes, and to better spell out the lifetime of the compiled code. From-SVN: r218234
2014-12-01PR jit/63854: Fix leak in real.c for i386:init_ext_80387_constantsDavid Malcolm2-0/+6
gcc/ChangeLog: PR jit/63854 * real.c (real_from_string): Add missing mpfr_clear. From-SVN: r218233
2014-12-01[AArch64][obvious] Gate fuse_adrp_add_1.c test on aarch64_small.Kyrylo Tkachov2-0/+5
* gcc.target/aarch64/fuse_adrp_add_1.c: Gate test on aarch64_small. From-SVN: r218232
2014-12-01PR jit/63854: Fix leak within jit-builtins.cDavid Malcolm4-12/+51
gcc/jit/ChangeLog: PR jit/63854 * jit-builtins.c (gcc::jit::recording::builtins_manager::make_fn_type): Call the context's new_function_type method, rather than directly creating a function_type instance. * jit-recording.c (gcc::jit::recording::context::new_function_type): New method, adapted from part of... (gcc::jit::recording::context::new_function_ptr_type): ...this. Update to call new_function_type. * jit-recording.h (gcc::jit::recording::context::new_function_type): New method. From-SVN: r218231
2014-12-01PR jit/63854: Fix leak in tree-ssa-math-opts.cDavid Malcolm2-7/+8
gcc/ChangeLog: PR jit/63854 * tree-ssa-math-opts.c (execute_cse_sincos_1): Fix a missing release of stmts by converting it to an auto_vec. From-SVN: r218230