Age | Commit message (Collapse) | Author | Files | Lines |
|
Nested functions are named "outerfunc.$nestedN", where N is a
number. nested_function_num extracts that number. The name is
first passed to unpack_hidden_name, which handles the "." and
should result "$nestedN". Don't expect the "." again.
This fixes assertion failure when escape analysis is enabled
and -fgo-debug-escape is on. The failure looks
go1: internal compiler error: in nested_function_num, at go/gofrontend/names.cc:241
0x7bd7d3 Gogo::nested_function_num(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
Reviewed-on: https://go-review.googlesource.com/76213
From-SVN: r254504
|
|
Currently the runtime is hard-coded to non-escape in various places.
Don't run escape analysis for runtime.
Reviewed-on: https://go-review.googlesource.com/76210
From-SVN: r254476
|
|
"make check" runs make recursively to check each package. Pass
the flags through. So it is possible to run "make check" with
different settings easily.
Reviewed-on: https://go-review.googlesource.com/76029
From-SVN: r254475
|
|
Otherwise we can get a crash in the backend.
Test case is https://golang.org/cl/73790.
Reviewed-on: https://go-review.googlesource.com/73810
From-SVN: r254126
|
|
Also fix 64-bit DWARF to read a 64-bit abbrev offset in the
compilation unit.
This is a backport of https://golang.org/cl/71171, which will be in
the Go 1.10 release, to the gofrontend copy. Doing it now because AIX
is pretty much the only system that uses 64-bit DWARF.
Reviewed-on: https://go-review.googlesource.com/72250
From-SVN: r253955
|
|
We were looking for the " = " before the optional package name that
appears for an indirect reference, but the exporter was putting it
after.
Test is https://golang.org/cl/70290.
Reviewed-on: https://go-review.googlesource.com/70330
From-SVN: r253694
|
|
header files, as is done in ../system.h.
* go-system.h (__STDC_FORMAT_MACROS): Define before including any
system header files, as is done in ../system.h.
From-SVN: r253666
|
|
Reviewed-on: https://go-review.googlesource.com/69891
From-SVN: r253664
|
|
For example, for the package math/big, we used to generate unexported
names as `big.trim` and exported names as `math_big.NewInt`. After
this change we will use `math_big` consistently.
Reviewed-on: https://go-review.googlesource.com/68651
From-SVN: r253468
|
|
Consolidate all symbol name handling into the new file names.cc. This
is intended to define all the names that will appear in the generated
assembly code. Names that will not appear in the assembly code, such
as local variable names or label names, remain where they are.
This consolidation is not intended to change any of the existing
symbol names. Tested by building without and without this patch and
comparing the libgo symbol table.
Reviewed-on: https://go-review.googlesource.com/68310
* Make-lang.in (GO_OBJS): Add go/names.o.
From-SVN: r253458
|
|
Patch by Rainer Orth.
Reviewed-on: https://go-review.googlesource.com/67111
From-SVN: r253292
|
|
We don't need them, and this fixes the build when using uClibc-ng
1.0.26 as originally reported at
https://gcc.gnu.org/ml/gcc-patches/2017-09/msg01930.html
Reviewed-on: https://go-review.googlesource.com/67110
From-SVN: r253291
|
|
The type verification code that enforces rules about the types of
embedded struct fields was not properly handling the case where the
pointed-to type is a pointer type, e.g.
type s *struct{ C int }
type t struct{ *s }
which is illegal according to the spec. Tweak the verifier to catch
this case, and add a guard in the lowering pass to make sure that we
don't crash on invalid accesses to field "C" in type "t" above.
Fixes golang/go#22050
Reviewed-on: https://go-review.googlesource.com/66530
From-SVN: r253236
|
|
Reviewed-on: https://go-review.googlesource.com/64550
From-SVN: r253231
|
|
Reviewed-on: https://go-review.googlesource.com/64592
From-SVN: r253105
|
|
With -enable-static=no we don't build non-pic objects, but libgotool.a
is built from non-pic objects. Build the packages that go into
libgotool.a in static mode in all cases.
Also ensure that internal test packages are built, since nothing
explicitly depended on them.
Reviewed-on: https://go-review.googlesource.com/65050
From-SVN: r253042
|
|
Reviewed-on: https://go-review.googlesource.com/64990
From-SVN: r253022
|
|
Reviewed-on: https://go-review.googlesource.com/64552
From-SVN: r253021
|
|
Reviewed-on: https://go-review.googlesource.com/64551
From-SVN: r253016
|
|
In the 1.9 upgrade I took out the word "goroutine" from a traceback
showing a goroutine running in C code, to let TestCgoNumGoroutine
pass. However, it turns out that some code is actually checking for
that string; for example,
https://github.com/grpc/grpc-go/blob/master/test/leakcheck/leakcheck.go#L44
So keep the message the same, and change the test.
Reviewed-on: https://go-review.googlesource.com/64850
From-SVN: r252991
|
|
Reviewed-on: https://go-review.googlesource.com/64110
From-SVN: r252953
|
|
Patch by Rainer Orth.
Reviewed-on: https://go-review.googlesource.com/64170
From-SVN: r252866
|
|
It is possible to do this check in backend, by walking the
block and check whether the last statement is a goto. But it
seems easier to do it in the frontend, where it can simply use
is_fallthrough.
Reviewed-on: https://go-review.googlesource.com/63690
From-SVN: r252851
|
|
Otherwise, a zero length is created in the backend and the
backend doesn't know there is an error.
Reviewed-on: https://go-review.googlesource.com/61610
From-SVN: r252849
|
|
Reviewed-on: https://go-review.googlesource.com/63753
From-SVN: r252767
|
|
In preparation for upgrading libgo to the 1.9 release, this
approximately incorporates https://golang.org/cl/37661 and
https://golang.org/cl/38351.
CL 37661 changed the gc compiler such that the select statement simply
returns an integer which is then used as the argument for a switch.
Since gccgo already worked that way, this just adjusts the switch code
to look like the gc switch code by removing the explicit case index
expression and calculating it from the order of calls to selectsend,
selectrecv, and selectdefault.
CL 38351 simplifies the channel code by not passing the unused channel
type descriptor pointer.
Reviewed-on: https://go-review.googlesource.com/62730
From-SVN: r252749
|
|
I encountered this crash while working on upgrading libgo to the 1.9
release. I no longer have the cause of the crash, but it doesn't much
matter, as the policy for crash-on-invalid errors is to fix the crash
but not bother to commit the invalid test case.
Reviewed-on: https://go-review.googlesource.com/62750
From-SVN: r252748
|
|
If we have an alias for a struct or array that requires a
type-specific function, don't emit the function with the alias name.
Emit it with the struct/array as usual.
Test case is https://golang.org/cl/62531.
Reviewed-on: https://go-review.googlesource.com/62412
From-SVN: r252747
|
|
This adds much of https://golang.org/cl/35731 and
https://golang.org/cl/35732 to the gofrontend code.
This is a step toward updating libgo to the 1.9 release. The
gofrontend already supports type aliases, and this is required for
correct support of type aliases when used as embedded fields.
The change to expressions.cc is to handle the << 1, used for the
newly renamed offsetAnon field, in the constant context used for type
descriptor initialization.
Reviewed-on: https://go-review.googlesource.com/62710
From-SVN: r252746
|
|
A normal pointer may not be converted to a notinheap pointer. We were
erroneously permitting a conversion from a normal pointer to a
notinheap unsafe.Pointer, which is useless since unsafe.Pointer is not
marked notinheap. Correct the test to permit a conversion from
unsafe.Pointer to a notinheap pointer, which is the same test that the
gc compiler uses.
The test case for this is in the 1.9 runtime package.
Reviewed-on: https://go-review.googlesource.com/62731
From-SVN: r252745
|
|
The code that lowers field references can sometimes introduce a double
pointer indirection in cases where it is not/safe appropriate. For
example, in
var p **struct { f int }
p.f = 0
the assignment LHS was being incorrectly lowered to (*(*p)).f.
Detect this situation and issue an error.
Fixes golang/go#21770
Reviewed-on: https://go-review.googlesource.com/62330
From-SVN: r251918
|
|
Patch by Rainer Orth.
Reviewed-on: https://go-review.googlesource.com/60732
From-SVN: r251574
|
|
This patch adds another machine_mode wrapper for modes that are
known to be COMPLEX_MODE_P. There aren't yet many places that make
use of it, but that might change in future.
2017-08-30 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* coretypes.h (complex_mode): New type.
* gdbhooks.py (build_pretty_printer): Handle it.
* machmode.h (complex_mode): New class.
(complex_mode::includes_p): New function.
(is_complex_int_mode): Likewise.
(is_complex_float_mode): Likewise.
* genmodes.c (get_mode_class): Handle complex mode classes.
* function.c (expand_function_end): Use is_complex_int_mode.
gcc/go/
* go-lang.c (go_langhook_type_for_mode): Use is_complex_float_mode.
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r251527
|
|
Replace checks of "GET_MODE_CLASS (...) == MODE_INT" with
"is_int_mode (..., &var)", in cases where it becomes useful
to refer to the mode as a scalar_int_mode.
2017-08-30 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* machmode.h (is_int_mode): New fuction.
* combine.c (find_split_point): Use it.
(combine_simplify_rtx): Likewise.
(simplify_if_then_else): Likewise.
(simplify_set): Likewise.
(simplify_shift_const_1): Likewise.
(simplify_comparison): Likewise.
* config/aarch64/aarch64.c (aarch64_rtx_costs): Likewise.
* cse.c (notreg_cost): Likewise.
(cse_insn): Likewise.
* cselib.c (cselib_lookup_1): Likewise.
* dojump.c (do_jump_1): Likewise.
(do_compare_rtx_and_jump): Likewise.
* dse.c (get_call_args): Likewise.
* dwarf2out.c (rtl_for_decl_init): Likewise.
(native_encode_initializer): Likewise.
* expmed.c (emit_store_flag_1): Likewise.
(emit_store_flag): Likewise.
* expr.c (convert_modes): Likewise.
(store_field): Likewise.
(expand_expr_real_1): Likewise.
* fold-const.c (fold_read_from_constant_string): Likewise.
* gimple-ssa-sprintf.c (get_format_string): Likewise.
* optabs-libfuncs.c (gen_int_libfunc): Likewise.
* optabs.c (expand_binop): Likewise.
(expand_unop): Likewise.
(expand_abs_nojump): Likewise.
(expand_one_cmpl_abs_nojump): Likewise.
* simplify-rtx.c (mode_signbit_p): Likewise.
(val_signbit_p): Likewise.
(val_signbit_known_set_p): Likewise.
(val_signbit_known_clear_p): Likewise.
(simplify_relational_operation_1): Likewise.
* tree.c (vector_type_mode): Likewise.
gcc/go/
* go-lang.c (go_langhook_type_for_mode): Use is_int_mode.
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r251472
|
|
This patch adds a scalar_float_mode class, which wraps a mode enum
that is known to satisfy SCALAR_FLOAT_MODE_P. Things like "SFmode"
now give a scalar_float_mode object instead of a machine_mode.
This in turn needs a change to the real.h format_helper, so that
it can accept both machine_modes and scalar_float_modes.
2017-08-30 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* coretypes.h (scalar_float_mode): New type.
* machmode.h (mode_traits::from_int): Use machine_mode if
USE_ENUM_MODES is defined.
(is_a): New function.
(as_a): Likewise.
(dyn_cast): Likewise.
(scalar_float_mode): New class.
(scalar_float_mode::includes_p): New function.
(is_float_mode): Likewise.
* gdbhooks.py (MachineModePrinter): New class.
(build_pretty_printer): Use it for scalar_float_mode.
* real.h (FLOAT_MODE_FORMAT): Use as_a <scalar_float_mode>.
(format_helper::format_helper): Turn into a template.
* genmodes.c (get_mode_class): New function.
(emit_insn_modes_h): Give modes the class returned by get_mode_class,
or machine_mode if none.
* config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Use
as_a <scalar_float_mode>.
* dwarf2out.c (mem_loc_descriptor): Likewise.
(insert_float): Likewise.
(add_const_value_attribute): Likewise.
* simplify-rtx.c (simplify_immed_subreg): Likewise.
* optabs.c (expand_absneg_bit): Take a scalar_float_mode.
(expand_unop): Update accordingly.
(expand_abs_nojump): Likewise.
(expand_copysign_absneg): Take a scalar_float_mode.
(expand_copysign_bit): Likewise.
(expand_copysign): Update accordingly.
gcc/ada/
* gcc-interface/utils.c (gnat_type_for_mode): Use is_a
<scalar_float_mode> instead of SCALAR_FLOAT_MODE_P.
gcc/go/
* go-lang.c (go_langhook_type_for_mode): Use is_float_mode.
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r251458
|
|
Reviewed-on: https://go-review.googlesource.com/59913
From-SVN: r251440
|
|
Reviewed-on: https://go-review.googlesource.com/59912
From-SVN: r251439
|
|
Reviewed-on: https://go-review.googlesource.com/59911
From-SVN: r251436
|
|
Reviewed-on: https://go-review.googlesource.com/59910
From-SVN: r251435
|
|
Reviewed-on: https://go-review.googlesource.com/57550
From-SVN: r251420
|
|
PR go/81893
runtime: only use PPC GNU/Linux register code on little endian
Reportedly the current code builds on little endian but not big endian.
Fixes https://gcc.gnu.org/PR81893.
Reviewed-on: https://go-review.googlesource.com/57110
From-SVN: r251188
|
|
Reviewed-on: https://go-review.googlesource.com/56910
From-SVN: r251182
|
|
Using -funwind-tables is necessary to permit Go code to correctly
throw a panic through C code. This hasn't been necessary in the past
as -funwind-tables is the default on x86. However, it is not the
default for PPC AIX.
Reviewed-on: https://go-review.googlesource.com/56650
From-SVN: r251179
|
|
Reviewed-on: https://go-review.googlesource.com/54170
From-SVN: r251133
|
|
Fix dumpregs on i386, implement dumpregs for PPC Linux/AIX, get PC on AIX.
Reviewed-on: https://go-review.googlesource.com/56170
From-SVN: r251127
|
|
It's possible to construct an lshift expression using unsafe.Sizeof
that is technically a compile-time constant but can't be evaluated
without going through backend methods. In this case, insure that
Type::make_non_abstract_type is called on the numeric operand of the
shift (as opposed to leaving as abstract), to avoid an assert later on
in the compiler flow.
Fixes golang/go#21372.
Reviewed-on: https://go-review.googlesource.com/54370
From-SVN: r251006
|
|
Libgo's implementation of math.Ldexp declared the libc "ldexp" as
taking an 'int' exponent argument, which is not quite right for 64-bit
platforms (exp arg is always int32); this could yield incorrect
results for exponent values outside the range of Minint32/Maxint32.
Fix by upating the type for the libc version of ldexp, and adding
guards to screen for out-of-range exponents.
Fixes #21323.
Reviewed-on: https://go-review.googlesource.com/54250
From-SVN: r250992
|
|
2017-08-07 Martin Liska <mliska@suse.cz>
* attribs.h (canonicalize_attr_name): New function.
(cmp_attribs): Move from c-format.c and adjusted.
(is_attribute_p): Moved from tree.h.
* tree-inline.c: Add new includes.
* tree.c (cmp_attrib_identifiers): Use cmp_attribs.
(private_is_attribute_p): Remove.
(private_lookup_attribute): Likewise.
(private_lookup_attribute_by_prefix): Simplify.
(remove_attribute): Use is_attribute_p.
* tree.h: Remove removed declarations.
2017-08-07 Martin Liska <mliska@suse.cz>
* array-notation-common.c: Add new includes.
* c-format.c( handle_format_attribute): Canonicalize a format
function name.
* c-lex.c (c_common_has_attribute): Canonicalize name of an
attribute.
* c-pretty-print.c: Add new include.
2017-08-07 Martin Liska <mliska@suse.cz>
* parser.c (cp_parser_gnu_attribute_list): Canonicalize name of an
attribute.
(cp_parser_std_attribute): Likewise.
* tree.c: Add new include.
2017-08-07 Martin Liska <mliska@suse.cz>
* c-parser.c (c_parser_attributes): Canonicalize name of an
attribute.
2017-08-07 Martin Liska <mliska@suse.cz>
* go-gcc.cc (Gcc_backend::function): Look up for no_split_stack
and not __no_split_stack__.
2017-08-07 Martin Liska <mliska@suse.cz>
* g++.dg/cpp0x/pr65558.C: Update scanned pattern.
* gcc.dg/parm-impl-decl-1.c: Likewise.
* gcc.dg/parm-impl-decl-3.c: Likewise.
* gcc.dg/Wattributes-5.c: New test.
From-SVN: r250911
|
|
Patch from Uros Bizjak.
Reviewed-on: https://go-review.googlesource.com/53350
From-SVN: r250873
|
|
PR go/81617
libgo: change mksigtab to recognize glibc 2.26 NSIG expression
Fixes golang/go#21147
Fixes GCC PR 81617
Reviewed-on: https://go-review.googlesource.com/52611
From-SVN: r250858
|