1. 04 Sep, 2014 12 commits
  2. 03 Sep, 2014 28 commits
    • compiler: Add precise type information on the heap. · f1d2ac4f
      	* go-gcc.cc (Gcc_backend::implicit_variable): Remove init
      	parameter.  Add is_hidden parameter.
      	(Gcc_backend::implicit_variable_set_init): New method.
      	(Gcc_backend::implicit_variable_reference): New method.
      
      From-SVN: r214894
      Chris Manghane committed
    • invoke.texi: Document that -Wlogical-not-parentheses is enabled by -Wall. · d2e4feca
      	* doc/invoke.texi: Document that -Wlogical-not-parentheses is enabled
      	by -Wall.
      c-family/
      	* c.opt (Wlogical-not-parentheses): Enable by -Wall.
      
      From-SVN: r214893
      Marek Polacek committed
    • [multiple changes] · 88f7d6fb
      2014-09-03  Fritz Reese  <Reese-Fritz@zai.com>
      
              PR fortran/62174
              * decl.c (variable_decl): Don't overwrite typespecs of Cray
              * pointees
              when matching a component declaration.
      
      2014-09-02  Fritz Reese  <Reese-Fritz@zai.com>
      
              PR fortran/62174
              * gfortran.dg/cray_pointers_11.f90: New.
      
      From-SVN: r214891
      Fritz Reese committed
    • rtl.texi (RTX_AUTOINC): Document that the first operand is the automodified register. · 64e04187
      gcc/
      	* doc/rtl.texi (RTX_AUTOINC): Document that the first operand is
      	the automodified register.
      
      From-SVN: r214890
      Richard Sandiford committed
    • output.h (get_some_local_dynamic_name): Declare. · 4fbca4ba
      gcc/
      	* output.h (get_some_local_dynamic_name): Declare.
      	* final.c (some_local_dynamic_name): New variable.
      	(get_some_local_dynamic_name): New function.
      	(final_end_function): Clear some_local_dynamic_name.
      	* config/alpha/alpha.c (machine_function): Remove some_ld_name.
      	(get_some_local_dynamic_name, get_some_local_dynamic_name_1): Delete.
      	(print_operand): Report an error if '%&' is used inappropriately.
      	* config/i386/i386.c (get_some_local_dynamic_name): Delete.
      	(get_some_local_dynamic_name_1): Delete.
      	* config/rs6000/rs6000.c (machine_function): Remove some_ld_name.
      	(rs6000_get_some_local_dynamic_name): Delete.
      	(rs6000_get_some_local_dynamic_name_1): Delete.
      	(print_operand): Report an error if '%&' is used inappropriately.
      	* config/s390/s390.c (machine_function): Remove some_ld_name.
      	(get_some_local_dynamic_name, get_some_local_dynamic_name_1): Delete.
      	(print_operand): Assert that get_some_local_dynamic_name is nonnull.
      	* config/sparc/sparc.c: Include rtl-iter.h.
      	(machine_function): Remove some_ld_name.
      	(sparc_print_operand): Report an error if '%&' is used inappropriately.
      	(get_some_local_dynamic_name, get_some_local_dynamic_name_1): Delete.
      
      From-SVN: r214889
      Richard Sandiford committed
    • aarch64: Improve epilogue unwind info · dd991abb
              * config/aarch64/aarch64.c (aarch64_popwb_single_reg): Remove.
              (aarch64_popwb_pair_reg): Remove.
              (aarch64_set_frame_expr): Remove.
              (aarch64_restore_callee_saves): Add CFI_OPS argument; fill it with
              the restore ops performed by the insns generated.
              (aarch64_expand_epilogue): Attach CFI_OPS to the stack deallocation
              insn.  Perform the calls_eh_return addition later; do not attempt to
              preserve the CFA in that case.  Don't use aarch64_set_frame_expr.
              (aarch64_expand_prologue): Use REG_CFA_ADJUST_CFA directly, or no
              special markup at all.  Load cfun->machine->frame.hard_fp_offset
              into a local variable.
              (aarch64_frame_pointer_required): Don't check calls_alloca.
      
      From-SVN: r214886
      Richard Henderson committed
    • opts.c (default_options_optimization): Adjust max-combine-insns to 2 for -Og. · b30e733a
      2014-09-03  Richard Biener  <rguenther@suse.de>
      
      	* opts.c (default_options_optimization): Adjust
      	max-combine-insns to 2 for -Og.
      
      From-SVN: r214879
      Richard Biener committed
    • re PR ipa/62015 (ipa-cp-clone uses a clone that is too specialized for the call context) · c8f40352
      2014-09-03  Martin Jambor  <mjambor@suse.cz>
      
      	PR ipa/62015
      	* ipa-cp.c (intersect_aggregates_with_edge): Handle impermissible
      	pass-trough jump functions correctly.
      
      testsuite/
      	* g++.dg/ipa/pr62015.C: New test.
      
      From-SVN: r214878
      Martin Jambor committed
    • re PR ipa/61986 (ICE on valid code at -O3 on x86_64-linux-gnu… · 6f9549ee
      re PR ipa/61986 (ICE on valid code at -O3 on x86_64-linux-gnu indecide_about_value, at ipa-cp.c:3480)
      
      2014-09-03  Martin Jambor  <mjambor@suse.cz>
          
      	PR ipa/61986
      	* ipa-cp.c (find_aggregate_values_for_callers_subset): Chain
      	created replacements in ascending order of offsets.
      	(known_aggs_to_agg_replacement_list): Likewise.
          
      gcc/testsuite/
      	* gcc.dg/ipa/pr61986.c: New test.
      
      From-SVN: r214877
      Martin Jambor committed
    • re PR c/62294 (Missing "passing argument [...] from incompatible pointer type" warning.) · 2b3ae5d1
      	PR c/62294
      	* gcc.dg/pr62294.c: New test.
      	* gcc.dg/pr62294.h: New file.
      
      From-SVN: r214876
      Marek Polacek committed
    • Fix for tree-ssa-pre · 27732ffd
      	* tree-ssa-sccvn.c (vn_reference_lookup_call): default (NULL) value
      	is set to preserve uninitialized value for vnresult.
      
      From-SVN: r214873
      Martin Liska committed
    • pr39228.c: Use dg-add-options instead of dg-options. · a0d3407e
      	* gcc.c-torture/execute/pr39228.c: Use dg-add-options instead
      	of dg-options.  Add "inline" keyword to test functions.
      
      From-SVN: r214872
      Kaz Kojima committed
    • re PR c/62024 (__atomic_always_lock_free is not a constant expression) · 8d95fe25
      	PR c/62024
      	* c-parser.c (c_parser_static_assert_declaration_no_semi): Strip no-op
      	conversions.
      
      	* g++.dg/cpp0x/pr62024.C: New test.
      	* gcc.dg/pr62024.c: New test.
      
      From-SVN: r214871
      Marek Polacek committed
    • [NDS32] No need to take padding into consideration in Andes ABI2 because we can... · d40f3c40
      [NDS32] No need to take padding into consideration in Andes ABI2 because
              we can pass arguments in registers for variadic function.
      
        -- By default GCC uses must_pass_in_stack_var_size_or_pad for TARGET_MUST_PASS_IN_STACK.
           For Andes ABI2, the data layout in memory will be incorrect when calling variadic function
           under big-endian configuration.
      
      	* config/nds32/nds32.c (nds32_must_pass_in_stack): New implementation
      	for TARGET_MUST_PASS_IN_STACK.
      
      From-SVN: r214869
      Chung-Ju Wu committed
    • [NDS32] Provide TARGET_ARG_PARTIAL_BYTES so that we can have structure argument · 650fc469
              partially in registers and stack.
      
        -- This is needed if we would like to pass variadic arguments via registers
           that are pused on the stack by callee.  So that va_arg() can access
           arguments continously in memory.
      
      	* config/nds32/nds32.c (nds32_arg_partial_bytes): New implementation
      	for TARGET_ARG_PARTIAL_BYTES.
      
      From-SVN: r214868
      Chung-Ju Wu committed
    • [NDS32] Emit stack push instructions for varargs at prologue stage and emit... · 557430f1
      [NDS32]  Emit stack push instructions for varargs at prologue stage and
               emit stack adjustment instructions for varargs at epilogue stage.
      
        -- Note that we do not need to handle it in v3push/v3pop prologue/epilogue
           expanding because we do not apply v3push/v3pop for variadic function.
      
      	* config/nds32/nds32.c (nds32_expand_prologue): Emit stack push
      	instructions for varargs implementation.
      	(nds32_expand_epilogue): Emit stack adjustment instructions for
      	varargs implementation.
      
      From-SVN: r214867
      Chung-Ju Wu committed
    • [NDS32] Since we are going to provide new heuristic for fp-as-gp optimization, · 99575d60
              we better not to set cfun->machine->fp_as_gp_p at prologue expanding.
      
      	* config/nds32/nds32.c (nds32_expand_prologue): Suppress fp-as-gp
      	optimization detection.
      
      From-SVN: r214866
      Chung-Ju Wu committed
    • [NDS32] Deal with nameless arguments in nds32_function_arg and nds32_function_arg_advance. · 7f6cd86b
        1. We have caller prepare nameless arguments in the way of calling a normal function.
      
           e.g. Assume a function: void va_test (int n, ...);
                When calling "va_test (6, 11, 22, 33, 44, 55, 66);",
                     r0    <- 6
                     r1    <- 11
                     r2    <- 22
                     r3    <- 33
                     r4    <- 44
                     r5    <- 55
                  [sp + 0] <- 66
      
        2. Note that we DO NOT handle it for TARGET_HARD_FLOAT case.
           The TARGET_HARD_FLOAT should push all the nameless arguments into
           stack and GCC is able to take care of them itself.
           In addition, we have not implemented hard float on trunk yet.
      
      	* config/nds32/nds32.c (nds32_function_arg): Deal with nameless
      	arguments.
      	(nds32_function_arg_advance): Deal with nameless arguments.
      	* config/nds32/nds32.h (NDS32_ARG_PASS_IN_REG_P): Split it into ...
      	(NDS32_ARG_ENTIRE_IN_GPR_REG_P): ... this one and ...
      	(NDS32_ARG_PARTIAL_IN_GPR_REG_P): ... this one.
      
      From-SVN: r214865
      Chung-Ju Wu committed
    • tree-ssa-pre.c (alloc_expression_id): Use quick_grow_cleared. · 52e4630c
      2014-09-03  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-pre.c (alloc_expression_id): Use quick_grow_cleared.
      	(struct bb_bitmap_sets): Remove deferred member.
      	(BB_DEFERRED): Remove.
      	(defer_or_phi_translate_block): Remove.
      	(compute_antic_aux): Remove deferring of blocks, assert
      	proper iteration order.
      	(compute_antic): Do not set BB_DEFERRED.
      	(eliminate): Allocate el_avail of proper size initially.
      
      From-SVN: r214864
      Richard Biener committed
    • [NDS32] Since argument pointer must be 8-byte alignment... · 4f44e960
      [NDS32] Since argument pointer must be 8-byte alignment, our first parameter may
              require 4-byte offset if pushed varargs is not 8-byte aligned.
      
      	* config/nds32/nds32.h (FIRST_PARM_OFFSET): Set proper location
      	according to the value of crtl->args.pretend_args_size.
      
      From-SVN: r214863
      Chung-Ju Wu committed
    • [NDS32] Prepare necessary varargs information in compute_stack_frame(). · 35da54a6
      	* config/nds32/nds32.c (nds32_compute_stack_frame): Prepare necessary
      	varargs information.
      
      From-SVN: r214862
      Chung-Ju Wu committed
    • [NDS32] Implement TARGET_SETUP_INCOMING_VARARGS target hook. · d4a6a4d9
      	* config/nds32/nds32.c (nds32_setup_incoming_varargs): New
      	implementation for TARGET_SETUP_INCOMING_VARARGS.
      	(nds32_strict_argument_naming): Refine comment.
      	* config/nds32/nds32.h (TARGET_SOFT_FLOAT, TARGET_HARD_FLOAT):
      	Define for future implementation.
      
      From-SVN: r214861
      Chung-Ju Wu committed
    • adxintrin.h (_subborrow_u32): New. · 9c6fb3ba
      gcc/
      2014-09-02  Ilya Tocar  <ilya.tocar@intel.com>
      
              * config/i386/adxintrin.h (_subborrow_u32): New.
              (_addcarry_u32): Ditto.
              (_subborrow_u64): Ditto.
              (_addcarry_u64): Ditto.
              * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_SBB32,
              IX86_BUILTIN_SBB64.
              (ix86_init_mmx_sse_builtins): Handle __builtin_ia32_sbb_u32,
              __builtin_ia32_sbb_u64
      
      
      testsuite/
      2014-09-02  Ilya Tocar  <ilya.tocar@intel.com>
      
              * gcc.target/i386/adx-addcarryx32-1.c: Test addcarry, subborrow.
              * gcc.target/i386/adx-addcarryx32-2.c: Ditto.
              * gcc.target/i386/adx-addcarryx32-3.c: Ditto.
              * gcc.target/i386/adx-addcarryx64-1.c: Ditto.
              * gcc.target/i386/adx-addcarryx64-2.c: Ditto.
              * gcc.target/i386/adx-addcarryx64-3.c: Ditto.
      
      From-SVN: r214860
      Ilya Tocar committed
    • [NDS32] Define and rename some GPR-specific stuff. · 9d93cc24
      	* config/nds32/nds32.c (nds32_function_arg): Define and rename some
      	GPR-specific stuff.
      	(nds32_function_arg_advance): Likewise.
      	(nds32_init_cumulative_args): Likewise.
      	* config/nds32/nds32.h (NDS32_MAX_GPR_REGS_FOR_ARGS): Define.
      	(NDS32_FIRST_GPR_REGNUM): Define.
      	(NDS32_LAST_GPR_REGNUM): Define.
      	(NDS32_AVAILABLE_REGNUM_FOR_GPR_ARG): Define.
      	(NDS32_ARG_PASS_IN_REG_P): Use NDS32_MAX_GPR_REGS_FOR_ARGS.
      	(FUNCTION_ARG_REGNO_P): Use NDS32_MAX_GPR_REGS_FOR_ARGS.
      	(machine_function): Use GRP-specific stuff.
      
      From-SVN: r214859
      Chung-Ju Wu committed
    • [NDS32] Remove unused variables. · 38a0632e
      	* config/nds32/nds32.c (nds32_expand_prologue): Remove unused variables.
      	(nds32_expand_epilogue): Likewise.
      	(nds32_expand_prologue_v3push): Likewise.
      	(nds32_expand_epilogue_v3pop): Likewise.
      
      From-SVN: r214858
      Chung-Ju Wu committed
    • [NDS32] We need to make sure it is NOT a variadic function so that some… · 2da1e7c0
      [NDS32] We need to make sure it is NOT a variadic function so that some v3push/v3pop preparation can be applied.
      
        -- The rationale of such avoidance is that the 'pop25' instruction also
           contains return behavior and we have no chance to further adjust stack
           pointer before returning to caller, which is very important to
           variadic function.
        -- So we do not setup v3push/v3pop (push25/pop25) information for a
           variadic function.  It will use normal stack push/pop instead.
      
      	* config/nds32/nds32.c (nds32_compute_stack_frame): Do not use
      	v3push/v3pop for variadic function.
      	* config/nds32/nds32.md (prologue, epilogue): Likewise.
      
      From-SVN: r214857
      Chung-Ju Wu committed
    • [NDS32] Consider varargs situation when creating stack operation assembly code. · 6f3d3f9c
        -- In fact, we only need to take care of 'push.s' situation,
           because we have to push all the nameless arguments into stack.
        -- We do not have to use 'pop.s' to restore them back to registers,
           because we can just adjust stack pointer to set frame location.
           This operation should be done in epilogue expanding.
        -- Because 'pop25' instruction also performs return operation, we will
           not use v3push/v3pop on isr and vararg functions.
           Therefore, their instruction length should be 4 bytes.
      
      	* config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push):
      	Check rtx for varargs implementation.
      	(nds32_output_stack_pop): Likewise.
      	* config/nds32/nds32-protos.h: Have a rtx argument for
      	nds32_output_stack_push and nds32_output_stack_pop.
      	* config/nds32/nds32.md: Likewise.
      
      From-SVN: r214856
      Chung-Ju Wu committed
    • [NDS32] Add a function to indentify if FUNC is an interrupt service routine. · 126b11c6
      	* config/nds32/nds32-isr.c (nds32_isr_function_p): Define new function
      	to check if FUNC is an interrupt service routine.
      	* config/nds32/nds32-protos.h (nds32_isr_function_p): Declaration.
      
      From-SVN: r214855
      Chung-Ju Wu committed