- 06 Dec, 2018 18 commits
-
-
The Linux kernel people want a feature that makes GCC pretend some inline assembler code is tiny (while it would think it is huge), so that such code will be inlined essentially always instead of essentially never. This patch lets you say "asm inline" instead of just "asm", with the result that that inline assembler is always counted as minimum cost for inlining. It implements this for C and C++, making "inline" another asm-qualifier (supplementing "volatile" and "goto"). * doc/extend.texi (Using Assembly Language with C): Document asm inline. (Size of an asm): Fix typo. Document asm inline. * gimple-pretty-print.c (dump_gimple_asm): Handle asm inline. * gimple.h (enum gf_mask): Add GF_ASM_INLINE. (gimple_asm_set_volatile): Fix typo. (gimple_asm_inline_p): New. (gimple_asm_set_inline): New. * gimplify.c (gimplify_asm_expr): Propagate the asm inline flag from tree to gimple. * ipa-icf-gimple.c (func_checker::compare_gimple_asm): Compare the gimple_asm_inline_p flag, too. * tree-core.h (tree_base): Document that protected_flag is ASM_INLINE_P in an ASM_EXPR. * tree-inline.c (estimate_num_insns): If gimple_asm_inline_p return a minimum size for an asm. * tree.h (ASM_INLINE_P): New. gcc/c/ * c-parser.c (c_parser_asm_statement): Detect the inline keyword after asm. Pass a flag for it to build_asm_expr. * c-tree.h (build_asm_expr): Update declaration. * c-typeck.c (build_asm_stmt): Add is_inline parameter. Use it to set ASM_INLINE_P. gcc/cp/ * cp-tree.h (finish_asm_stmt): Update declaration. * parser.c (cp_parser_asm_definition): Detect the inline keyword after asm. Pass a flag for it to finish_asm_stmt. * pt.c (tsubst_expr): Pass the ASM_INLINE_P flag to finish_asm_stmt. * semantics.c (finish_asm_stmt): Add inline_p parameter. Use it to set ASM_INLINE_P. gcc/testsuite/ * c-c++-common/torture/asm-inline.c: New testcase. * gcc.dg/asm-qual-2.c: Test asm inline, too. From-SVN: r266860
Segher Boessenkool committed -
PR55681 observes that currently only one qualifier is allowed for inline asm, so that e.g. "volatile asm" is allowed, "const asm" is also okay (with a warning), but "const volatile asm" gives an error. Also "goto" has to be last. This patch changes things so that only "asm-qualifiers" are allowed, that is "volatile" and "goto", in any combination, in any order, but without repetitions. PR inline-asm/55681 * doc/extend.texi (Basic Asm): Update grammar. (Extended Asm): Update grammar. gcc/c/ PR inline-asm/55681 * c-parser.c (c_parser_asm_statement): Update grammar. Allow any combination of volatile and goto, in any order, without repetitions. gcc/cp/ PR inline-asm/55681 * parser.c (cp_parser_asm_definition): Update grammar. Allow any combination of volatile and goto, in any order, without repetitions. gcc/testsuite/ PR inline-asm/55681 * gcc.dg/asm-qual-1.c: Test that "const" and "restrict" are refused. * gcc.dg/asm-qual-2.c: New test, test that asm-qualifiers are allowed in any order, but that duplicates are not allowed. From-SVN: r266859
Segher Boessenkool committed -
PR testsuite/86540 * gcc.dg/tree-ssa/ssa-dom-thread-7.c: Skip the post switch conversion tests on aarch64. * gcc.dg/tree-ssa/pr77445-2.c: Similarly. From-SVN: r266857
Jeff Law committed -
This patch is based on grepping the C++ frontend for %P i.e. diagnostics that refer to a parameter number. It fixes up these diagnostics to highlight the pertinent param where appropriate (and possible), along with various other tweaks, as described in the ChangeLog. gcc/cp/ChangeLog: PR c++/85110 * call.c (conversion_null_warnings): Try to use the location of the expression for the warnings. Add notes showing the parameter of the function decl, where available. (get_fndecl_argument_location): For implicitly-declared functions, use the fndecl location rather than that of the param. (maybe_inform_about_fndecl_for_bogus_argument_init): New function. (convert_like_real): Use it in various places to avoid repetition. (complain_about_bad_argument): Likewise. * cp-tree.h (maybe_inform_about_fndecl_for_bogus_argument_init): New declaration. * decl2.c (check_default_args): Put all diagnostics for the fndecl into a diagnostic group. Use the location of the parameter when complaining about parameters with missing default arguments in preference to that of the fndecl. Attempt to record the location of the first parameter with a default argument and emit a note for the first parameter that's missing one. * typeck.c (convert_arguments): When complaining about parameters with incomplete types, attempt to use the location of the argument. Where available, add a note showing the pertinent parameter in the fndecl. (convert_for_assignment): When complaining about bad conversions at function calls, use the location of the unstripped argument. (convert_for_initialization): When checking for bogus references, add an auto_diagnostic_group, and update the note to use the location of the pertinent parameter, rather than just the callee. gcc/testsuite/ChangeLog: PR c++/85110 * g++.dg/diagnostic/missing-default-args.C: New test. * g++.dg/diagnostic/param-type-mismatch-3.C: New test. * g++.dg/diagnostic/param-type-mismatch.C: Add tests for invalid references and incomplete types. * g++.dg/warn/Wconversion-null-4.C: New test. From-SVN: r266856
David Malcolm committed -
From-SVN: r266854
Jeff Law committed -
2018-12-06 Iain Sandoe <iain@sandoe.co.uk> PR target/78444 * config/i386/darwin.h (STACK_BOUNDARY): Remove macro. * config/i386/i386.c (ix86_compute_frame_layout): Ensure at least 128b stack alignment in non-leaf functions. From-SVN: r266853
Iain Sandoe committed -
PR target/87598 * config/aarch64/aarch64.c (aarch64_print_address_internal): Don't call output_operand_lossage on VOIDmode CONST_INTs. After output_operand_lossage do return false. * gcc.target/aarch64/asm-5.c: New test. From-SVN: r266852
Jakub Jelinek committed -
2018-12-06 Richard Biener <rguenther@suse.de> * df-problems.c (df_rd_local_compute): Use bitmap_release. (df_live_free): Likewise. (df_md_local_compute): Likewise. (df_md_free): Release df_md_scratch bitmap. * loop-invariant.c (calculate_loop_reg_pressure): Use bitmap_release. * sched-deps.c (true_dependency_cache, output_dependency_cache, anti_dependency_cache, control_dependency_cache, spec_dependency_cache): Use bitmap instead of bitmap_head *. * sched-ebb.c (schedule_ebbs_init): Initialize non-GTY dont_calc_deps as bitmap allocated from obstack not GC. (schedule_ebbs_finish): Use bitmap_release. * sched-rgn.c (schedule_insns): Initialize non-GTY not_in_df as bitmap allocated from obstack not GC. Use bitmap_release. * sel-sched.c (_forced_ebb_heads): Remove premature optimization. (sel_region_init): Allocate forced_ebb_heads. (sel_region_finish): Free forced_ebb_heads. From-SVN: r266851
Richard Biener committed -
2018-12-06 Richard Biener <rguenther@suse.de> * bitmap.c (bitmap_head::crashme): Define. * bitmap.h (bitmap_head): Add constexpr default constructor poisoning the obstack member. (bitmap_head::crashme): Declare. (bitmap_release): New function clearing a bitmap and poisoning the obstack member. * gengtype.c (main): Make it recognize CONSTEXPR. * lra-constraints.c (lra_inheritance): Use bitmap_release instead of bitmap_clear. * ira.c (ira): Work around class-memaccess warning. * regrename.c (create_new_chain): Likewise. From-SVN: r266850
Richard Biener committed -
PR tree-optimization/85726 * generic-match-head.c (optimize_successive_divisions_p): New function. * gimple-match-head.c (optimize_successive_divisions_p): Likewise. * match.pd: Don't combine successive divisions if they aren't exact and optimize_successive_divisions_p is false. * gcc.dg/tree-ssa/pr85726-1.c: New test. * gcc.dg/tree-ssa/pr85726-2.c: New test. * gcc.dg/tree-ssa/pr85726-3.c: New test. * gcc.dg/tree-ssa/pr85726-4.c: New test. From-SVN: r266848
Jakub Jelinek committed -
PR fortran/88304 * tree-nested.c (convert_nonlocal_reference_stmt): Remove clobbers for non-local automatic decls. * gfortran.fortran-torture/compile/pr88304.f90: New test. From-SVN: r266847
Jakub Jelinek committed -
2018-12-06 Richard Biener <rguenther@suse.de> PR middle-end/63184 * c-c++-common/pr19807-2.c: Try link only on x86, add xfailed optimized dump scanning. * c-c++-common/pr19807-3.c: Likewise. From-SVN: r266846
Richard Biener committed -
/cp 2018-12-06 Paolo Carlini <paolo.carlini@oracle.com> * decl2.c (grokbitfield): Use DECL_SOURCE_LOCATION in error message; print the type too; fix thinko in INDIRECT_TYPE_P use. /testsuite 2018-12-06 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/parse/bitfield6b.C: New. * g++.dg/parse/bitfield3.C: Test location and type. From-SVN: r266841
Paolo Carlini committed -
2018-12-06 Iain Sandoe <iain@sandoe.co.uk> * lib/c-compat.exp (compat-use-alt-compiler): Handle -fno-diagnostics-show-line-numbers. (compat_setup_dfp): Likewise. From-SVN: r266840
Iain Sandoe committed -
re PR rtl-optimization/85770 (ICE: in lra_eliminate, at lra-eliminations.c:1439 with -march=nano-1000) PR rtl-optimization/85770 * gcc.target/i386/pr85770.c: New test. From-SVN: r266839
Jeff Law committed -
* config/rs6000/aix72.h (ASM_DEFAULT_SPEC): Match Power7 processor default. From-SVN: r266838
David Edelsohn committed -
From-SVN: r266837
GCC Administrator committed -
* dwarf2out.c (field_byte_offset): Remove #ifdef PCC_BITFIELD_TYPE_MATTERS check. From-SVN: r266834
Uros Bizjak committed
-
- 05 Dec, 2018 20 commits
-
-
PR c/87028 * calls.c (get_attr_nonstring_decl): Avoid setting *REF to SSA_NAME_VAR. * gcc/gimple-low.c (lower_stmt): Fold builtin calls here. * gimplify (maybe_fold_stmt): Avoid folding builtin calls. PR c/87028 * c-c++-common/Wstringop-truncation.c: Remove xfails. * gcc.dg/Wstringop-truncation-5.c: New test. * gcc.dg/strcmpopt_1.c: Adjust. * gcc.dg/tree-ssa/pr79697.c: Same. From-SVN: r266833
Jeff Law committed -
This CL adds support of precise stack scan using stack maps to the runtime. The stack maps are generated by the compiler (if supported). Each safepoint is associated with a (real or dummy) landing pad, and its "type info" in the exception table is a pointer to the stack map. When a stack is scanned, the stack map is found by the stack unwinding code by inspecting the exception table (LSDA). For precise stack scan we need to unwind the stack. There are three cases: - If a goroutine is scanning its own stack, it can unwind the stack and scan the frames. - If a goroutine is scanning another, stopped, goroutine, it cannot directly unwind the target stack. We handle this by switching (runtime.gogo) to the target g, letting it unwind and scan the stack, and switch back. - If we are scanning a goroutine that is blocked in a syscall, we send a signal to the target goroutine's thread, and let the signal handler unwind and scan the stack. Extra care is needed as this races with enter/exit syscall. Currently this is only implemented on linux. Reviewed-on: https://go-review.googlesource.com/c/140518 From-SVN: r266832
Ian Lance Taylor committed -
2018-12-05 Iain Sandoe <iain@sandoe.co.uk> * configure.ac (NCN_STRICT_CHECK_TOOLS): Check otool. (ACX_CHECK_INSTALLED_TARGET_TOOL): Likewise (GCC_TARGET_TOOL): Likewise. * Makefile.tpl (HOST_EXPORTS): Add OTOOL, OTOOL_FOR_TARGET. (BASE_TARGET_EXPORTS): OTOOL, export OTOOL_FOR_TARGET. OTOOL, OTOOL_FOR_TARGET: New substitutions. (EXTRA_HOST_FLAGS, EXTRA_TARGET_FLAGS): Add OTOOL. * configure: Regenerate. * Makefile.in: Likewise. gcc/ * configure.ac (gcc_cv_otool): Set. * configure: Regenerate. From-SVN: r266831
Iain Sandoe committed -
* config/i386/cygming.h (PCC_BITFIELD_TYPE_MATTERS): Remove. (GROUP_BITFIELDS_BY_ALIGN): Ditto. From-SVN: r266830
Uros Bizjak committed -
As Jakub pointed out, if we narrow a plus, minus or mult operation based on the number of bits that consumers need, we have to convert a signed operation to an unsigned one in order to avoid new undefined behaviour. This patch does that and generalises vect_convert_input and vect_recog_over_widening_pattern to cope with the extra casts. (The changes to both functions are covered by existing tests.) 2018-12-03 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR tree-optimization/88064 * tree-vect-patterns.c (vect_convert_input): Convert the result of an existing cast if it has the right width but the wrong sign. Do not test the signedness of the required result when considering whether to split an existing cast; instead split to a type with the same signedness as the source of the cast, then convert it to the opposite signedness where necessary. (vect_recog_over_widening_pattern): Handle sign changes between the final PLUS_EXPR and the RSHIFT_EXPR. (vect_recog_average_pattern): Use an unsigned operation when truncating an addition, subtraction or multiplication. Cast the result back to the "real" signedness before promoting. gcc/testsuite/ PR tree-optimization/88064 * gcc.dg/vect/vect-over-widen-23.c: New test. From-SVN: r266829
Richard Sandiford committed -
When debugging a failing test, I typically invoke DejaGnu at verbosity level 2 (via RUNTESTFLAGS="-v -v dg.exp=something"), so that DejaGnu prints the command line used to invoke the compiler; specifically these two sites: target.exp "Invoking the compiler as " remote.exp "Executing on $hostname" which are both verbosity level 2. Unfortunately I run into an O(n^2) issue with logging from process-message: verbose "process-message:\n${dg-messages}" 2 where, as each message each processed, it emits the state of dg-messages, containing the new message and all messages so far, leading to exponentially-increasing output at level 2 as more test messages are added. This patch papers over the problem by moving the problematic message to verbosity level 3. gcc/testsuite/ChangeLog: * lib/gcc-dg.exp (process-message): Change verbosity level of "verbose" from 2 to 3. (dg-locus): Likewise. From-SVN: r266828
David Malcolm committed -
2018-12-05 Richard Biener <rguenther@suse.de> PR middle-end/63184 * c-c++-common/pr19807-2.c: New testcase. * c-c++-common/pr19807-3.c: Likewise. From-SVN: r266827
Richard Biener committed -
From-SVN: r266826
Paul Koning committed -
PR testsuite/88208 * gcc.target/sparc/attr-aligned.c (MAXALIGN) [__sparcv9 || __arch64__]: Define. From-SVN: r266825
Rainer Orth committed -
* gcc.target/sparc/20181129-1.c: Compile with -std=c99. * gcc.target/sparc/20181129-2.c: Likewise. From-SVN: r266824
Rainer Orth committed -
re PR tree-optimization/86637 (ICE: tree check: expected block, have <invalid tree code> in inlining_chain_to_json, at optinfo-emit-json.cc:293) 2018-12-05 Richard Biener <rguenther@suse.de> PR tree-optimization/86637 * tree-vectorizer.c (pass_slp_vectorize::execute): Reset vect_location at the end. From-SVN: r266821
Richard Biener committed -
re PR tree-optimization/87360 (ICE in remove_redundant_iv_tests at gcc/tree-ssa-loop-ivcanon.c:571 since r255467) PR tree-optimization/87360 * gimple-loop-jam.c (tree_loop_unroll_and_jam): On failure to analyze data dependencies, don't return false, just continue. Formatting fixes. (merge_loop_tree, bb_prevents_fusion_p, unroll_jam_possible_p, fuse_loops): Formatting fixes. * g++.dg/opt/pr87360.C: New test. * gfortran.dg/pr87360.f90: New test. From-SVN: r266820
Jakub Jelinek committed -
PR c++/87897 * g++.dg/init/const13.C: New test. From-SVN: r266818
Jakub Jelinek committed -
PR sanitizer/88333 * cfgexpand.c (expand_stack_vars): If asan_vec is empty, start with aligning frame offset to ASAN_RED_ZONE_SIZE bytes. * c-c++-common/asan/pr88333.c: New test. From-SVN: r266817
Jakub Jelinek committed -
The testcase is the work-around testcase for the PR; even that had started failing. The problem was that, when unqualifying the type of a TARGET_EXPR, we'd create a variant of the type, then request the conversion of the TARGET_EXPR_INITIAL to that variant type. Though the types are different pointer-wise, they're the same_type_p, so the resulting modified expr compares cp_tree_equal to the original, which maybe_constant_value flags as an error. There's no reason to construct an alternate TARGET_EXPR or CONSTRUCTOR just because of an equivalent type, except for another spot that expected pointer equality that would no longer be satisfied. Without relaxing the assert in constexpr_call_hasher::equal, g++.robertl/eb73.C would trigger an assertion failure. for gcc/cp/ChangeLog PR c++/85569 * constexpr.c (adjust_temp_type): Test for type equality with same_type_p. (constexpr_call_hasher::equal): Likewise. for gcc/testsuite/ChangeLog PR c++/85569 * g++.dg/cpp1z/pr85569.C: New. From-SVN: r266816
Alexandre Oliva committed -
* gcc.target/mips/msa.c: Adjusted clti_<su>.df $wn, $wn, 4 to clei_<su>.df $wn, $wn, 4 in test31. From-SVN: r266815
Chenghua Xu committed -
2018-12-05 Xianmiao Qu <xianmiao_qu@c-sky.com> gcc/ * config.gcc (csky-*-linux-gnu*): Force .init_array support. From-SVN: r266813
Xianmiao Qu committed -
CL 152397 removed it from gc's syscall package. Updates golang/go#29084 Reviewed-on: https://go-review.googlesource.com/c/152557 From-SVN: r266812
Ian Lance Taylor committed -
David's fix for the AIX aggregate passing from yesterday unfortunately also triggers on powerpc64-linux. This fixes it. * config/rs6000/rs6000.c (rs6000_function_arg): Only do the special aggregate handling on actual AIX, not on somewhat similar systems. (rs6000_arg_partial_bytes): Ditto. From-SVN: r266811
Segher Boessenkool committed -
From-SVN: r266810
GCC Administrator committed
-
- 04 Dec, 2018 2 commits
-
-
/cp 2018-12-04 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84636 * decl.c (grokdeclarator): Avoid crashing on an anonymous bit-field with function type. /testsuite 2018-12-04 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84636 * g++.dg/parse/bitfield6.C: New. From-SVN: r266807
Paolo Carlini committed -
re PR tree-optimization/87320 (Last iteration of vectorized loop not executed when peeling for gaps) PR tree-optimization/87320 * gcc.dg/pr87320.c: New test. From-SVN: r266805
Jakub Jelinek committed
-