Age | Commit message (Collapse) | Author | Files | Lines |
|
The export data, which is approximately readable and looks something
like Go, was first implemented back when Go still used semicolons.
Drop the semicolons, to make it look slightly more Go like and make it
slightly smaller.
This updates the compiler and the gccgoimporter package.
This introduces a new version of the export data. There are going to
be more changes to the export data, so this version is still subject
to change.
Reviewed-on: https://go-review.googlesource.com/c/143018
From-SVN: r265284
|
|
gcc/ChangeLog:
* Makefile.in (SELFTEST_TARGETS): New.
(selftest) Change from s-selftest-c to $(SELFTEST_TARGETS).
(C_SELFTEST_FLAGS, C_SELFTEST_DEPS, s-selftest-c, selftest-c-gdb)
(selftest-gdb, selftest-c-valgrind, selftest-valgrind): Move to
c/Make-lang.in.
(CPP_SELFTEST_FLAGS, CPP_SELFTEST_DEPS, s-selftest-c++)
(selftest-c++-gdb, selftest-c++-valgrind): Move to
cp/Make-lang.in.
* configure: Regenerate.
* configure.ac (selftest_languages): New.
gcc/brig/ChangeLog:
* Make-lang.in (selftest-brig): New.
gcc/c/ChangeLog:
* Make-lang.in (selftest-c): New.
(C_SELFTEST_FLAGS, C_SELFTEST_DEPS, s-selftest-c, selftest-c-gdb)
(selftest-gdb, selftest-c-valgrind, selftest-valgrind): Move here
from gcc/Makefile.in.
gcc/cp/ChangeLog:
* Make-lang.in (selftest-c++): New.
(CPP_SELFTEST_FLAGS, CPP_SELFTEST_DEPS, s-selftest-c++)
(selftest-c++-gdb, selftest-c++-valgrind): Move here from
gcc/Makefile.in.
gcc/fortran/ChangeLog:
* Make-lang.in (selftest-fortran): New.
gcc/go/ChangeLog:
* Make-lang.in (selftest-go): New.
gcc/jit/ChangeLog:
* Make-lang.in (selftest-jit): New.
gcc/lto/ChangeLog:
* Make-lang.in (selftest-lto): New.
gcc/objc/ChangeLog:
* Make-lang.in (selftest-objc): New.
gcc/objcp/ChangeLog:
* Make-lang.in (selftest-obj-c++): New.
From-SVN: r265240
|
|
LLVM doesn't support non-call exception. This test was passing
more or less by luck: if the faulting instruction is between two
calls with the same landing pad (in instruction layout order,
not the program's logic order), it generates a merged PC range
that covers the faulting instruction. If the instruction layout
order changes, or it uses two different (but may be degenerate)
landing pads, this doesn't work.
Reviewed-on: https://go-review.googlesource.com/c/140517
From-SVN: r264985
|
|
Reviewed-on: https://go-review.googlesource.com/c/140277
From-SVN: r264932
|
|
Use inline assembly in the implementation of internal_cpu.xgetbv as
opposed to a call to the intrinsic _xgetbv(), since non-gcc compilers
(e.g. clang) may or may not have support for it.
Reviewed-on: https://go-review.googlesource.com/c/140137
From-SVN: r264882
|
|
Nothing in libgo calls checkgoarm, and it relies on a variable, goarm,
that is not set.
Reviewed-on: https://go-review.googlesource.com/c/140057
From-SVN: r264872
|
|
Reviewed-on: https://go-review.googlesource.com/138839
From-SVN: r264798
|
|
This reportedly happens on CentOS 5.11. The real code will work fine;
this test is assuming that the unexported slice function will handle
the splice, but if pipe2 does not work then it doesn't. The relevant
code in internal/poll/splice_linux.go says "Falling back to pipe is
possible, but prior to 2.6.29 splice returns -EAGAIN instead of 0 when
the connection is closed."
Reviewed-on: https://go-review.googlesource.com/138838
From-SVN: r264793
|
|
When asking for a placeholder type of an alias type, build a
placeholder for the underlying type, instead of treating the
alias as a named type and calling get_backend. The latter may
fail as we may not be ready to build a complete backend type. We
have already used a unified backend type for alias type and its
underlying type. Do the same for placeholders as well.
Reviewed-on: https://go-review.googlesource.com/138635
From-SVN: r264773
|
|
This is enough to let libgo build when configured using
--with-multilib-list=m64,m32,mx32. I don't have an x32-enabled kernel
so I haven't tested whether it executes correctly.
For https://gcc.gnu.org/PR87470
Reviewed-on: https://go-review.googlesource.com/138817
From-SVN: r264772
|
|
Rewrite the arm64 AES hashing code from gc assembler to C code using
intrinsics. The resulting code generates the same hash code for the
same input as the gc code--that doesn't matter as such, but testing it
ensures that the C code does something useful.
Reviewed-on: https://go-review.googlesource.com/138535
From-SVN: r264771
|
|
Fix a bug in the parser code that decides whether a given name should
be considered exported or not. The function Lex::is_exported_name
(which assumes that its input is a mangled name) was being called on
non-mangled (raw utf-8) names in various places. For the bug in
question this caused an imported package to be registered under the
wrong name. To fix the issue, rename 'Lex::is_exported_name' to
'Lex::is_exported_mangled_name', and add a new 'Lex::is_exported_name'
that works on utf-8 strings.
Fixes golang/go#27836.
Reviewed-on: https://go-review.googlesource.com/137736
From-SVN: r264690
|
|
On Alpha GNU/Linux there is no geteuid system call, there is only
getresuid. The raw geteuid system call is only used for testing, so
just skip the test if it's not available.
Reviewed-on: https://go-review.googlesource.com/137655
From-SVN: r264647
|
|
Reviewed-on: https://go-review.googlesource.com/137535
From-SVN: r264593
|
|
In internal/bytealg correct a +build tag to never build indexbyte_generic.go
for the gofrontend, where we always use indexbyte_native.go.
For internal/cpu let the Makefile define CacheLineSize using goarch.sh,
rather than trying to enumerate all the possibilities in cpu_ARCH.go files.
In internal/poll call the C fcntl function rather than using SYS_FCNTL.
Change mksysinfo.sh to ensure that F_GETPIPE_SZ is always defined,
and check that in internal/poll.
Reviewed-on: https://go-review.googlesource.com/137256
From-SVN: r264572
|
|
This permits TestScript to work when gccgo is not installed.
Previous testing was using a previously installed gccgo, not the newly
built one.
This revealed that the testing of whether an internal package is
permitted was incorrect for standard library packages, since the
uninstalled gccgo can see internal packages in the uninstalled libgo.
Fix the internal package tests.
This permitted removing a couple of gccgo-specific changes in the
testsuite.
Reviewed-on: https://go-review.googlesource.com/137255
From-SVN: r264570
|
|
2018-09-25 Martin Liska <mliska@suse.cz>
* alias.c (set_dest_equal_p): Remove unused function.
* config/i386/i386.c (def_builtin_pure2): Likewise.
* diagnostic-show-locus.c (class layout): Remove
unused field.
(layout::layout): Likewise here.
* dump-context.h (class temp_dump_context): Likewise.
* dwarf2out.c (add_AT_fde_ref): Remove unused function.
(add_AT_loclistsptr): Likewise.
(add_AT_offset): Likewise.
(get_AT_hi_pc): Likewise.
(is_comdat_die): Likewise.
(type_is_enum): Likewise.
(ceiling): Likewise.
(add_AT_vms_delta): Likewise.
(is_class_die): Likewise.
* edit-context.c (class line_event): Remove unused field.
* graphite-sese-to-poly.c (tree_int_to_gmp): Remove
unused function.
* ipa-cp.c (ipa_get_vr_lat): Likewise.
* lra-constraints.c (ok_for_index_p_nonstrict): Likewise.
(ok_for_base_p_nonstrict): Likewise.
* tree-chrec.c (is_not_constant_evolution): Likewise.
(chrec_fold_poly_cst): Likewise.
* tree-if-conv.c (has_pred_critical_p): Likewise.
* tree-ssa-coalesce.c (print_exprs): Likewise.
* tree-ssa-pre.c (bitmap_set_contains_expr): Likewise.
* tree-ssa-uninit.c (is_and_or_or_p): Likewise.
* tree-vrp.c (value_ranges_intersect_p): Likewise.
(value_range_nonnegative_p): Likewise.
2018-09-25 Martin Liska <mliska@suse.cz>
* name-lookup.c (namespace_scope_ht_size): Remove
unused function.
* parser.c (cp_lexer_next_token_is_not_keyword): Likewise.
2018-09-25 Martin Liska <mliska@suse.cz>
* trans.c (remove_suffix): Remove
unused function.
2018-09-25 Martin Liska <mliska@suse.cz>
* gofrontend/escape.cc (Gogo::analyze_escape): Remove
usage of a parameter.
(Gogo::assign_connectivity): Likewise.
(class Escape_analysis_tag): Likewise.
(Gogo::tag_function): Likewise.
* gofrontend/expressions.cc (Call_expression::do_type): Likewise.
* gofrontend/gogo.h (class Gogo): Likewise.
* gofrontend/types.cc (class Call_multiple_result_type): Likewise.
(Type::make_call_multiple_result_type): Likewise.
* gofrontend/types.h (class Type): Likewise.
* gofrontend/wb.cc (class Check_escape): Likewise.
(Gogo::add_write_barriers): Likewise.
From-SVN: r264561
|
|
Reviewed-on: https://go-review.googlesource.com/136435
gotools/:
* Makefile.am (mostlyclean-local): Run chmod on check-go-dir to
make sure it is writable.
(check-go-tools): Likewise.
(check-vet): Copy internal/objabi to check-vet-dir.
* Makefile.in: Rebuild.
From-SVN: r264546
|
|
The option has existed and been working for years,
make sure it implies the right extra options, and list
it in the documentation.
2018-09-20 Allan Sandfeld Jensen <allan.jensen@qt.io>
gcc/
* gcc.c (LINK_COMMAND_SPEC): Handle -r like -nostdlib.
(VTABLE_VERIFICATION_SPEC): Likewise.
(SANITIZER_EARLY_SPEC): Likewise.
(SANITIZER_SPEC): Likewise.
* config/darwin.h (LINK_COMMAND_SPEC): Likewise.
* doc/invoke.texi (Link Options): Document -r.
gcc/cp/
* g++spec.c (lang_specific_driver): Handle -r like -nostdlib.
gcc/fortran/
* gfortranspec.c (lang_specific_driver): Handle -r like -nostdlib.
gcc/go/
* gospec.c (lang_specific_driver): Handle -r like -nostdlib.
gcc/testsuite/
* g++.dg/ipa/pr64059.C: Removed now redundant -nostdlib.
* g++.dg/lto/20081109-1_0.C: Likewise.
* g++.dg/lto/20090302_0.C: Likewise.
* g++.dg/lto/pr45621_0.C: Likewise.
* g++.dg/lto/pr60567_0.C: Likewise.
* g++.dg/lto/pr62026.C: Likewise.
* gcc.dg/lto/pr45736_0.c: Likewise.
* gcc.dg/lto/pr52634_0.c: Likewise.
* gfortran.dg/lto/20091016-1_0.f90: Likewise.
* gfortran.dg/lto/pr79108_0.f90: Likewise.
From-SVN: r264451
|
|
Bring in https://golang.org/cl/135297 from the gc repository to fix a
GCC bug report.
Original CL description:
The GNU assembler for ARM treats @ as a comment character, so section
types must be written using % instead.
Fixes https://gcc.gnu.org/PR87260.
Reviewed-on: https://go-review.googlesource.com/135360
From-SVN: r264330
|
|
This CL corrects the handling of a deferred delete in a loop, to not
use a temporary whose value will, at deferred execution time, wind up
being the last value in the loop.
The test for this is TestDeferDeleteSlow in the 1.11 runtime package.
Reviewed-on: https://go-review.googlesource.com/135358
From-SVN: r264325
|
|
In 1.11 writebarrierptr is going away, so change the compiler to call
gcWriteBarrier instead. We weren't using gcWriteBarrier before;
adjust the implementation to use the putFast method.
This revealed a problem in the kickoff function. When using cgo,
kickoff can be called on the g0 of an m allocated by newExtraM. In
that case the m will generally have a p, but systemstack may be called
by wbBufFlush as part of flushing the write barrier buffer. At that
point the buffer is full, so we can not do a write barrier. So adjust
the existing code in kickoff so that in the case where we are g0,
don't do any write barrier at all.
Reviewed-on: https://go-review.googlesource.com/131395
From-SVN: r264295
|
|
In the sweep code we can sometimes see incorrect counts when
conservative stack scanning causes us to grey an object that we
earlier decided could be freed. We already ignored this check, but
adjust this case to maintain correct span counts when it happens.
This gives us slightly more correct numbers in MemStats, and helps
avoid a rare failure in TestReadMemStats.
Also fix the free index, and cope with finding a full span when
allocating a new one.
Reviewed-on: https://go-review.googlesource.com/134216
From-SVN: r264294
|
|
This is the gofrontend version of https://golang.org/cl/37933,
https://golang.org/cl/37934, and https://golang.org/cl/37935.
Open code the initialization of select cases.
This is a step toward updating libgo to the 1.11 release.
Reviewed-on: https://go-review.googlesource.com/135000
From-SVN: r264290
|
|
Reviewed-on: https://go-review.googlesource.com/134228
From-SVN: r264283
|
|
Unlike the gc runtime, libgo stores traceback information in location
structs, which contain strings. Therefore, copying location structs
around appears to require write barriers, although in fact write
barriers are never important because the strings are never allocated
in Go memory. They come from libbacktrace.
Some of the generated write barriers come at times when write barriers
are not permitted. For example, exitsyscall, marked
nowritebarrierrec, calls exitsyscallfast which calls traceGoSysExit
which calls traceEvent which calls traceStackID which calls
trace.stackTab.put which copies location values into memory allocated
by tab.newStack. This write barrier can be invoked when there is no
p, causing a crash.
This change fixes the problem by ensuring that location values are
copied around in the tracing code with no write barriers.
This was found by fixing the compiler to fully implement
//go:nowritebarrierrec; CL to follow.
Reviewed-on: https://go-review.googlesource.com/134226
From-SVN: r264282
|
|
To reduce the amount of time spent in write barrier processing
(specifically runtime.bulkBarrierPreWrite), add support for building a
'GC roots index', basically a sorted list of all roots, so as to
allow more efficient lookups of gcdata structures for globals. The
previous implementation worked on the raw (unsorted) roots list
itself, which did not scale well.
Reviewed-on: https://go-review.googlesource.com/132595
From-SVN: r264276
|
|
Omit a write barrier for
s = s[0:]
for a slice s. In this case the pointer is not changing and no write
barrier is required.
Omit a write barrier for
s = append(s, v)
in the case where len(s) < cap(s) (and similarly when appending more
values). When the slice has enough capacity the pointer is not
changing and no write barrier is required.
These changes are required to avoid write barriers in the method
randomOrder.reset in the runtime package. That method is called from
procresize, at a point where we do not want to allocate memory.
Otherwise that method can use a write barrier, allocate memory, and
break TestReadMemStats.
Reviewed-on: https://go-review.googlesource.com/134219
From-SVN: r264259
|
|
When creating type descriptor variables, the compiler (specifically
Type::make_type_descriptor_var) invokes the immutable_struct() and
immutable_struct_set_init() back end methods, so as to insure that
these items go into the ".rodata" section of the generate object file.
The expression initializers for these variables can contain nested
subexpressions, however, and these subexpressions were not always
being placed into .rodata. This patch changes the backend-gen code for
slice initializers to emit implicit variables into .rodata if those
initializers are part of a type descriptor init.
Reviewed-on: https://go-review.googlesource.com/132596
From-SVN: r264181
|
|
This is the gofrontend version of https://golang.org/cl/91796.
This is part of that CL, just the compiler change and required runtime
changes, in preparation for updating libgo to 1.11.
Relevant part of original CL description:
The hmap field in the maptype is only used by the runtime to check the sizes of
the hmap structure created by the compiler and runtime agree.
Comments are already present about the hmap structure definitions in the
compiler and runtime needing to be in sync.
Reviewed-on: https://go-review.googlesource.com/130976
From-SVN: r263941
|
|
From-SVN: r263886
|
|
2018-08-27 Martin Liska <mliska@suse.cz>
* builtins.h (is_builtin_fn): Remove and fndecl_built_in_p.
* builtins.c (is_builtin_fn): Likewise.
* attribs.c (diag_attr_exclusions): Use new function
fndecl_built_in_p and remove check for FUNCTION_DECL if
possible.
(builtin_mathfn_code): Likewise.
(fold_builtin_expect): Likewise.
(fold_call_expr): Likewise.
(fold_builtin_call_array): Likewise.
(fold_call_stmt): Likewise.
(set_builtin_user_assembler_name): Likewise.
(is_simple_builtin): Likewise.
* calls.c (gimple_alloca_call_p): Likewise.
(maybe_warn_nonstring_arg): Likewise.
* cfgexpand.c (expand_call_stmt): Likewise.
* cgraph.c (cgraph_update_edges_for_call_stmt_node): Likewise.
(cgraph_edge::verify_corresponds_to_fndecl): Likewise.
(cgraph_node::verify_node): Likewise.
* cgraphclones.c (build_function_decl_skip_args): Likewise.
(cgraph_node::create_clone): Likewise.
* config/arm/arm.c (arm_insert_attributes): Likewise.
* config/i386/i386.c (ix86_gimple_fold_builtin): Likewise.
* dse.c (scan_insn): Likewise.
* expr.c (expand_expr_real_1): Likewise.
* fold-const.c (operand_equal_p): Likewise.
(fold_binary_loc): Likewise.
* gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
* gimple-low.c (lower_stmt): Likewise.
* gimple-pretty-print.c (dump_gimple_call): Likewise.
* gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Likewise.
* gimple.c (gimple_build_call_from_tree): Likewise.
(gimple_call_builtin_p): Likewise.
(gimple_call_combined_fn): Likewise.
* gimplify.c (gimplify_call_expr): Likewise.
(gimple_boolify): Likewise.
(gimplify_modify_expr): Likewise.
(gimplify_addr_expr): Likewise.
* hsa-gen.c (gen_hsa_insns_for_call): Likewise.
* ipa-cp.c (determine_versionability): Likewise.
* ipa-fnsummary.c (compute_fn_summary): Likewise.
* ipa-param-manipulation.c (ipa_modify_formal_parameters): Likewise.
* ipa-split.c (visit_bb): Likewise.
(split_function): Likewise.
* ipa-visibility.c (cgraph_externally_visible_p): Likewise.
* lto-cgraph.c (input_node): Likewise.
* lto-streamer-out.c (write_symbol): Likewise.
* omp-low.c (setjmp_or_longjmp_p): Likewise.
(lower_omp_1): Likewise.
* predict.c (strip_predict_hints): Likewise.
* print-tree.c (print_node): Likewise.
* symtab.c (symtab_node::output_to_lto_symbol_table_p): Likewise.
* trans-mem.c (is_tm_irrevocable): Likewise.
(is_tm_load): Likewise.
(is_tm_simple_load): Likewise.
(is_tm_store): Likewise.
(is_tm_simple_store): Likewise.
(is_tm_abort): Likewise.
(tm_region_init_1): Likewise.
* tree-call-cdce.c (gen_shrink_wrap_conditions): Likewise.
* tree-cfg.c (verify_gimple_call): Likewise.
(move_stmt_r): Likewise.
(stmt_can_terminate_bb_p): Likewise.
* tree-eh.c (lower_eh_constructs_2): Likewise.
* tree-if-conv.c (if_convertible_stmt_p): Likewise.
* tree-inline.c (remap_gimple_stmt): Likewise.
(copy_bb): Likewise.
(estimate_num_insns): Likewise.
(fold_marked_statements): Likewise.
* tree-sra.c (scan_function): Likewise.
* tree-ssa-ccp.c (surely_varying_stmt_p): Likewise.
(optimize_stack_restore): Likewise.
(pass_fold_builtins::execute): Likewise.
* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
(mark_all_reaching_defs_necessary_1): Likewise.
* tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Likewise.
* tree-ssa-forwprop.c (simplify_builtin_call): Likewise.
(pass_forwprop::execute): Likewise.
* tree-ssa-loop-im.c (stmt_cost): Likewise.
* tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
* tree-ssa-sccvn.c (fully_constant_vn_reference_p): Likewise.
* tree-ssa-strlen.c (get_string_length): Likewise.
* tree-ssa-structalias.c (handle_lhs_call): Likewise.
(find_func_aliases_for_call): Likewise.
* tree-ssa-ter.c (find_replaceable_in_bb): Likewise.
* tree-stdarg.c (optimize_va_list_gpr_fpr_size): Likewise.
* tree-tailcall.c (find_tail_calls): Likewise.
* tree.c (need_assembler_name_p): Likewise.
(free_lang_data_in_decl): Likewise.
(get_call_combined_fn): Likewise.
* ubsan.c (is_ubsan_builtin_p): Likewise.
* varasm.c (incorporeal_function_p): Likewise.
* tree.h (DECL_BUILT_IN): Remove and replace with
fndecl_built_in_p.
(DECL_BUILT_IN_P): Transfort to fndecl_built_in_p.
(fndecl_built_in_p): New.
2018-08-27 Martin Liska <mliska@suse.cz>
* gcc-interface/decl.c (update_profile): Use new function
fndecl_built_in_p and remove check for FUNCTION_DECL if
possible.
* gcc-interface/gigi.h (call_is_atomic_load): Likewise.
* gcc-interface/utils.c (gnat_pushdecl): Likewise.
2018-08-27 Martin Liska <mliska@suse.cz>
* c-common.c (check_function_restrict): Use new function
fndecl_built_in_p and remove check for FUNCTION_DECL if
possible.
(check_builtin_function_arguments): Likewise.
(reject_gcc_builtin): Likewise.
* c-warn.c (sizeof_pointer_memaccess_warning): Likewise.
2018-08-27 Martin Liska <mliska@suse.cz>
* c-decl.c (locate_old_decl): Use new function
fndecl_built_in_p and remove check for FUNCTION_DECL if
possible.
(diagnose_mismatched_decls): Likewise.
(merge_decls): Likewise.
(warn_if_shadowing): Likewise.
(pushdecl): Likewise.
(implicitly_declare): Likewise.
* c-parser.c (c_parser_postfix_expression_after_primary): Likewise.
* c-tree.h (C_DECL_ISNT_PROTOTYPE): Likewise.
* c-typeck.c (build_function_call_vec): Likewise.
(convert_arguments): Likewise.
2018-08-27 Martin Liska <mliska@suse.cz>
* call.c (build_call_a): Use new function
fndecl_built_in_p and remove check for FUNCTION_DECL if
possible.
(build_cxx_call): Likewise.
* constexpr.c (constexpr_fn_retval): Likewise.
(cxx_eval_builtin_function_call): Likewise.
(cxx_eval_call_expression): Likewise.
(potential_constant_expression_1): Likewise.
* cp-gimplify.c (cp_gimplify_expr): Likewise.
(cp_fold): Likewise.
* decl.c (decls_match): Likewise.
(validate_constexpr_redeclaration): Likewise.
(duplicate_decls): Likewise.
(make_rtl_for_nonlocal_decl): Likewise.
* name-lookup.c (consider_binding_level): Likewise.
(cp_emit_debug_info_for_using): Likewise.
* semantics.c (finish_call_expr): Likewise.
* tree.c (builtin_valid_in_constant_expr_p): Likewise.
2018-08-27 Martin Liska <mliska@suse.cz>
* go-gcc.cc (Gcc_backend::call_expression): Use new function
fndecl_built_in_p and remove check for FUNCTION_DECL if
possible.
2018-08-27 Martin Liska <mliska@suse.cz>
* lto-lang.c (handle_const_attribute): Use new function
fndecl_built_in_p and remove check for FUNCTION_DECL if
possible.
* lto-symtab.c (lto_symtab_merge_p): Likewise.
(lto_symtab_merge_decls_1): Likewise.
(lto_symtab_merge_symbols): Likewise.
* lto.c (lto_maybe_register_decl): Likewise.
(read_cgraph_and_symbols): Likewise.
From-SVN: r263880
|
|
This is a port of https://golang.org/cl/109596 to the gofrontend, in
preparation for updating libgo to 1.11.
Original CL description:
getcallersp is intrinsified, and so the dummy arg is no longer
needed. Remove it, as well as a few dummy args that are solely
to feed getcallersp.
Reviewed-on: https://go-review.googlesource.com/131116
From-SVN: r263840
|
|
Fix up the testing package to insure that execution traces
work properly (e.g. "-test.trace=<XXX>" command line option). The
call to stop tracing and emit the output file was stubbed out.
Reviewed-on: https://go-review.googlesource.com/128275
From-SVN: r263363
|
|
Updates golang/go#26634
Reviewed-on: https://go-review.googlesource.com/126857
From-SVN: r263186
|
|
When writing stack frames to the pprof CPU profile machinery, it is
very important to insure that the frames emitted do not contain any
frames corresponding to artifacts of the profiling process itself
(signal handlers, sigprof, etc). This patch changes runtime.sigprof to
strip out those frames from the raw stack generated by
"runtime.callers".
Fixes golang/go#26595.
Reviewed-on: https://go-review.googlesource.com/126175
From-SVN: r263035
|
|
gcc/ada/ChangeLog:
PR middle-end/82063
* gcc-interface/misc.c (gnat_handle_option): Change function argument
to HOST_WIDE_INT.
gcc/brig/ChangeLog:
PR middle-end/82063
* brig/brig-lang.c (brig_langhook_handle_option): Change function
argument to HOST_WIDE_INT.
gcc/c-family/ChangeLog:
PR middle-end/82063
* c-common.h (c_common_handle_option): Change function argument
to HOST_WIDE_INT.
* c-opts.c (c_common_init_options): Same.
(c_common_handle_option): Same. Remove special handling of
OPT_Walloca_larger_than_ and OPT_Wvla_larger_than_.
* c.opt (-Walloc-size-larger-than, -Walloca-larger-than): Change
options to take a HOST_WIDE_INT argument and accept a byte-size
suffix. Initialize.
(-Wvla-larger-than): Same.
(-Wno-alloc-size-larger-than, -Wno-alloca-larger-than): New.
(-Wno-vla-larger-than): Same.
gcc/fortran/ChangeLog:
PR middle-end/82063
* gfortran.h (gfc_handle_option): Change function argument
to HOST_WIDE_INT.
* options.c (gfc_handle_option): Same.
gcc/go/ChangeLog:
PR middle-end/82063
* go-lang.c (go_langhook_handle_option): Change function argument
to HOST_WIDE_INT.
gcc/lto/ChangeLog:
PR middle-end/82063
* lto-lang.c (lto_handle_option): Change function argument
to HOST_WIDE_INT.
gcc/testsuite/ChangeLog:
PR middle-end/82063
* gcc/testsuite/c-c++-common/pr68657-1.c: Adjust.
* gcc/testsuite/c-c++-common/pr68657-2.c: Same.
* gcc/testsuite/c-c++-common/pr68657-3.c: Same.
* gcc.dg/Walloc-size-larger-than-16.c: Same.
* gcc.dg/Walloca-larger-than.c: New test.
* gcc.dg/Walloca-larger-than-2.c: New test.
* gcc.dg/Wframe-larger-than-2.c: New test.
* gcc.dg/Wlarger-than3.c: New test.
* gcc.dg/Wvla-larger-than-3.c: New test.
* gcc.dg/pr42611.c: Adjust.
* gnat.dg/frame_overflow.adb: Same.
gcc/ChangeLog:
PR middle-end/82063
* builtins.c (expand_builtin_alloca): Adjust.
* calls.c (alloc_max_size): Simplify.
* cgraphunit.c (cgraph_node::expand): Adjust.
* common.opt (larger_than_size, warn_frame_larger_than): Remove
variables.
(frame_larger_than_size): Same.
(-Wframe-larger-than, -Wlarger-than, -Wstack-usage): Change options
to take a HOST_WIDE_INT argument and accept a byte-size suffix.
Initialize.
* doc/invoke.texi (GCC Command Options): Document option arguments.
Explain byte-size arguments and suffixes.
(-Wvla-larger-than, -Wno-alloc-size-larger-than): Update.
(-Wno-alloca-larger-than, -Wno-vla-larger-than): Same.
(-Wframe-larger-than, -Wlarger-than, -Wstack-usage): Same.
* doc/options.texi (UInteger): Expand.
(Host_Wide_Int, ByteSize): Document new properties.
* final.c (final_start_function_1): Include sizes in an error message.
* function.c (frame_offset_overflow): Same.
* gimple-ssa-warn-alloca.c (pass_walloca::gate): Adjust.
(alloca_call_type_by_arg): Change function argument to HOST_WIDE_INT.
Diagnose unbounded alloca calls only for limits of less than
PTRDIFF_MAX.
(alloca_call_type): Adjust. Diagnose possibly out-of-bounds alloca
calls and VLA size only for limits of less than PTRDIFF_MAX. Same
for alloca(0).
(pass_walloca::execute): Adjust. Diagnose alloca calls in loops
only for limits of less than PTRDIFF_MAX.
* langhooks-def.h (lhd_handle_option): Change function argument
to HOST_WIDE_INT.
* langhooks.c (lhd_handle_option): Same.
* langhooks.h (handle_option): Same.
* opt-functions.awk (switch_bit_fields): Handle Host_Wide_Int and
ByteSize flags.
(var_type, var_type_struct): Same.
(var_set): Handle ByteSize flag.
* optc-gen.awk: Add comments to output to ease debugging. Make
use of HOST_WIDE_INT where appropriate.
* opts-gen-save.awk: Use %lx to format unsigned long.
* opth-gen.awk: Change function argument to HOST_WIDE_INT.
* opts-common.c (integral_argument): Return HOST_WIDE_INT and add
arguments. Parse bytes-size suffixes.
(enum_arg_to_value): Change function argument to HOST_WIDE_INT.
(enum_value_to_arg): Same.
(decode_cmdline_option): Handle cl_host_wide_int. Adjust.
(handle_option): Adjust.
(generate_option): Change function argument to HOST_WIDE_INT.
(cmdline_handle_error): Adjust.
(read_cmdline_option): Change function argument to HOST_WIDE_INT.
(set_option): Change function argument to HOST_WIDE_INT.
(option_enabled): Handle cl_host_wide_int.
(get_option_state): Handle CLVC_SIZE.
(control_warning_option): Same.
* opts.c (common_handle_option): Change function argument to
HOST_WIDE_INT. Remove handling of OPT_Walloca_larger_than_ and
OPT_Wvla_larger_than_.
* opts.h (enum cl_var_type): Add an enumerator.
* stor-layout.c (layout_decl): Print a more meaningful warning.
* toplev.c (output_stack_usage): Adjust.
From-SVN: r262910
|
|
In remove_shortcuts, the shortcut expressions (&&, ||) are
rewritten to if statements, which are lifted out before the
statement containing the shortcut expression. If the containing
statement has other (sub)expressions that should be evaluated
before the shortcut expression, which has not been lifted out,
this will result in wrong evaluation order.
For example, F() + G(A() && B()), the evaluation order per spec
is F, A, B (if A returns true), G. If we lift A() and B() out
first, they will be called before F, which is wrong.
To fix this, we split order_evaluations to two phases. The first
phase, which runs before remove_shortcuts, skips shortcut
expressions' components. So it won't lift out subexpressions that
are evaluated conditionally. The shortcut expression itself is
ordered, since it may have side effects. Then we run
remove_shortcuts. At this point the subexpressions that should be
evaluated before the shortcut expression are already lifted out.
remove_shortcuts also runs the second phase of order_evaluations
to order the components of shortcut expressions, which were
skipped during the first phase.
Reorder the code blocks of remove_shortcuts and order_evaluations,
since remove_shortcuts now calls Order_eval.
Fixes golang/go#26495.
Reviewed-on: https://go-review.googlesource.com/125299
From-SVN: r262908
|
|
CL 123362 introduced a bug in creating alias type's backend
representation. A type's btype_ should not be set before
named types are converted if it is a placeholder. For alias
type, it is set too early. This may result in unresolved
placeholders. This CL fixes it.
Reviewed-on: https://go-review.googlesource.com/123975
From-SVN: r262833
|
|
Previously, when creating the backend representation of a
circular type, we resolve the placeholder to a
circular_pointer_type. The backend doesn't know what the
concrete type is.
This CL changes it to resolve the placeholder to the concrete
type instead, so the backend may have better knowledge of the
concrete type.
Reviewed-on: https://go-review.googlesource.com/123738
From-SVN: r262830
|
|
The libffi library doesn't understand zero-sized objects.
When we see a zero-sized field in a struct, just skip it when
converting to the FFI data structures. There is no value to pass in
any case, so not telling libffi about the field doesn't affect
anything.
The test case for this is https://golang.org/cl/123316.
Fixes golang/go#26335
Reviewed-on: https://go-review.googlesource.com/123335
From-SVN: r262651
|
|
The frontend could parse omitted pointer typess at the end of the
type, but not in the middle, so code like []*[][]int{{{1}}} failed.
Test case is in https://golang.org/cl/123477.
Fixes golang/go#26340
Reviewed-on: https://go-review.googlesource.com/123479
From-SVN: r262641
|
|
A type alias and its underlying type are identical. Build a
single backend type for them. Previously we build two backend
types, which sometimes confuse the backend's type system.
Also don't include type aliases into the list of named type
declarations, since they are not named types.
Reviewed-on: https://go-review.googlesource.com/123362
From-SVN: r262572
|
|
The spec says that when an index expression appears on the left hand
side of an assignment, the operands should be evaluated. The
gofrontend code was assuming that that only referred to the index
operand. But discussion of https://golang.org/issue/23188 has
clarified that this means both the slice/map/string operand and the
index operand. Adjust the gofrontend code accordingly.
Fixes golang/go#23188
Reviewed-on: https://go-review.googlesource.com/123155
From-SVN: r262554
|
|
In Interface_field_reference_expression, the interface expression
is used in two places, so a temporary variable is used. Previously,
we used a Set_and_use_temporary_expression, which, when evaluated
twice, causes double evaluation of the underlying expression. Fix
by setting the temporary once and use Temporary_reference_expression
instead.
Fixes golang/go#26248.
Reviewed-on: https://go-review.googlesource.com/122756
From-SVN: r262533
|
|
go command)
PR go/86331
os: check return value as well as error from waitid
https://gcc.gnu.org/PR86331 indicates that if a signal handler runs it
is possible for syscall.Syscall6 to return a non-zero errno value even
if no error occurs. That is a problem in general, but this fix will
let us work around the general problem for the specific case of
calling waitid.
Reviewed-on: https://go-review.googlesource.com/121595
From-SVN: r262313
|
|
Noticed in https://gcc.gnu.org/PR86331.
Reviewed-on: https://go-review.googlesource.com/121417
From-SVN: r262234
|
|
PR go/86343
* go-gcc.cc (Gcc_backend::set_placeholder_struct_type): Call
build_variant_type_copy rather than build_distinct_type_copy.
From-SVN: r262225
|
|
This CL ports recent enhancements of the escape analysis in the
gc compiler to gofrontend.
- CL 99335: unnamed receiver should not escape.
- CL 105257: propagate loop depth to field. This prevents it
from escaping when a field's address is taken inside a loop
(but not otherwise escape).
- CL 107597: use element type for "indirection" of slice/string.
This prevents the slice/string from escaping when only the
element, in case that it is pointerless, flows to outer scope.
Reviewed-on: https://go-review.googlesource.com/120760
From-SVN: r262120
|
|
USING_SPLIT_STACK is configured as defined/undefined, not 0/1.
Most of the places test USING_SPLIT_STACK with #ifdef, with a
few exceptions. This CL fixes the exceptions.
Reviewed-on: https://go-review.googlesource.com/120596
From-SVN: r261980
|