<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gcc.git/libgo/runtime/go-reflect-call.c, branch master</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/'/>
<entry>
<title>re PR go/91781 (r275691 breaks go test "reflect")</title>
<updated>2019-09-17T20:24:00+00:00</updated>
<author>
<name>Ian Lance Taylor</name>
<email>ian@gcc.gnu.org</email>
</author>
<published>2019-09-17T20:24:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=033425d0ed0092748fc919e5c40dc47421dcdd89'/>
<id>033425d0ed0092748fc919e5c40dc47421dcdd89</id>
<content type='text'>
	PR go/91781
    reflect: promote integer closure return to full word
    
    The libffi library expects an integer return type to be promoted to a
    full word.  Implement that when returning from a closure written in Go.
    This only matters on big-endian systems when returning an integer smaller
    than the pointer size, which is why we didn't notice it until now.
    
    Fixes https://gcc.gnu.org/PR91781.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/195858

From-SVN: r275813
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	PR go/91781
    reflect: promote integer closure return to full word
    
    The libffi library expects an integer return type to be promoted to a
    full word.  Implement that when returning from a closure written in Go.
    This only matters on big-endian systems when returning an integer smaller
    than the pointer size, which is why we didn't notice it until now.
    
    Fixes https://gcc.gnu.org/PR91781.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/195858

From-SVN: r275813
</pre>
</div>
</content>
</entry>
<entry>
<title>compile, runtime: permit anonymous and empty fields in C header</title>
<updated>2019-08-30T21:49:49+00:00</updated>
<author>
<name>Ian Lance Taylor</name>
<email>ian@gcc.gnu.org</email>
</author>
<published>2019-08-30T21:49:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=4a140826453da37a134d792e0224f4e37343e68a'/>
<id>4a140826453da37a134d792e0224f4e37343e68a</id>
<content type='text'>
    
    Permit putting structs with anonymous and empty fields in the C header
    file runtime.inc that is used to build the C runtime code.  This is
    required for upcoming 1.13 support, as the m struct has picked up an
    anonymous field.
    
    Doing this lets the C header contain all the type descriptor structs,
    so start using those in the C code.  This cuts the number of copies of
    type descriptor definitions from 3 to 2.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/192343

From-SVN: r275227
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
    
    Permit putting structs with anonymous and empty fields in the C header
    file runtime.inc that is used to build the C runtime code.  This is
    required for upcoming 1.13 support, as the m struct has picked up an
    anonymous field.
    
    Doing this lets the C header contain all the type descriptor structs,
    so start using those in the C code.  This cuts the number of copies of
    type descriptor definitions from 3 to 2.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/192343

From-SVN: r275227
</pre>
</div>
</content>
</entry>
<entry>
<title>compiler, runtime: harmonize types referenced by both C and Go</title>
<updated>2019-02-15T01:57:51+00:00</updated>
<author>
<name>Ian Lance Taylor</name>
<email>ian@gcc.gnu.org</email>
</author>
<published>2019-02-15T01:57:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=8a9f2a6bbd6bdf164ca987edac34ac72447881a5'/>
<id>8a9f2a6bbd6bdf164ca987edac34ac72447881a5</id>
<content type='text'>
    
    Compiling with LTO revealed a number of cases in the runtime and
    standard library where C and Go disagreed about the type of an object or
    function (or where Go and code generated by the compiler disagreed). In
    all cases the underlying representation was the same (e.g., uintptr vs.
    void*), so this wasn't causing actual problems, but it did result in a
    number of annoying warnings when compiling with LTO.
    
    Reviewed-on: https://go-review.googlesource.com/c/160700

From-SVN: r268923
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
    
    Compiling with LTO revealed a number of cases in the runtime and
    standard library where C and Go disagreed about the type of an object or
    function (or where Go and code generated by the compiler disagreed). In
    all cases the underlying representation was the same (e.g., uintptr vs.
    void*), so this wasn't causing actual problems, but it did result in a
    number of annoying warnings when compiling with LTO.
    
    Reviewed-on: https://go-review.googlesource.com/c/160700

From-SVN: r268923
</pre>
</div>
</content>
</entry>
<entry>
<title>runtime: remove __go_alloc and __go_free</title>
<updated>2017-01-03T22:58:48+00:00</updated>
<author>
<name>Ian Lance Taylor</name>
<email>ian@gcc.gnu.org</email>
</author>
<published>2017-01-03T22:58:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=0f2a6e84c6e4edd122228be318a014dd88d1c4f2'/>
<id>0f2a6e84c6e4edd122228be318a014dd88d1c4f2</id>
<content type='text'>
    
    Move allocg and handling of allgs slice from C to Go.
    
    Reviewed-on: https://go-review.googlesource.com/34797

From-SVN: r244036
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
    
    Move allocg and handling of allgs slice from C to Go.
    
    Reviewed-on: https://go-review.googlesource.com/34797

From-SVN: r244036
</pre>
</div>
</content>
</entry>
<entry>
<title>runtime, reflect: rewrite Go to FFI type conversion in Go</title>
<updated>2016-11-18T00:15:38+00:00</updated>
<author>
<name>Ian Lance Taylor</name>
<email>ian@gcc.gnu.org</email>
</author>
<published>2016-11-18T00:15:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=5302cd025063e00bde7d102284f638977dde5f27'/>
<id>5302cd025063e00bde7d102284f638977dde5f27</id>
<content type='text'>
    
    As we move toward the Go 1.7 garbage collector, it's essential that all
    allocation of values that can contain Go pointers be done using the
    correct type descriptor.  That is simplest if we do all such allocation
    in Go code.  This rewrites the code that converts from a Go type to a
    libffi CIF into Go.
    
    Reviewed-on: https://go-review.googlesource.com/33353

From-SVN: r242578
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
    
    As we move toward the Go 1.7 garbage collector, it's essential that all
    allocation of values that can contain Go pointers be done using the
    correct type descriptor.  That is simplest if we do all such allocation
    in Go code.  This rewrites the code that converts from a Go type to a
    libffi CIF into Go.
    
    Reviewed-on: https://go-review.googlesource.com/33353

From-SVN: r242578
</pre>
</div>
</content>
</entry>
<entry>
<title>re PR go/68496 ([libgo] reflect test fails on Linux x86-64)</title>
<updated>2015-11-23T21:17:45+00:00</updated>
<author>
<name>Ian Lance Taylor</name>
<email>ian@gcc.gnu.org</email>
</author>
<published>2015-11-23T21:17:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=8c61286797664f445db424050ea4c73cf265b242'/>
<id>8c61286797664f445db424050ea4c73cf265b242</id>
<content type='text'>
	PR go/68496
    reflect: Allocate space for FFI functions returning a zero-sized type.
    
    The libffi library does not understand zero-sized types.  We represent
    them as a struct with a single field of type void.  If such a type is
    returned from a function, libffi will copy 1 byte of data.  Allocate
    space for that byte, although we won't use it.
    
    Fixes https://gcc.gnu.org/PR68496.

    Reviewed-on: https://go-review.googlesource.com/17175

From-SVN: r230776
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	PR go/68496
    reflect: Allocate space for FFI functions returning a zero-sized type.
    
    The libffi library does not understand zero-sized types.  We represent
    them as a struct with a single field of type void.  If such a type is
    returned from a function, libffi will copy 1 byte of data.  Allocate
    space for that byte, although we won't use it.
    
    Fixes https://gcc.gnu.org/PR68496.

    Reviewed-on: https://go-review.googlesource.com/17175

From-SVN: r230776
</pre>
</div>
</content>
</entry>
<entry>
<title>compiler, reflect, runtime: Use static chain for closures.</title>
<updated>2015-01-16T22:58:53+00:00</updated>
<author>
<name>Richard Henderson</name>
<email>rth@redhat.com</email>
</author>
<published>2015-01-16T22:58:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=38bf819a5f995ae4621496df2324d68b9e24900f'/>
<id>38bf819a5f995ae4621496df2324d68b9e24900f</id>
<content type='text'>
Change from using __go_set_closure to passing the closure
value in the static chain field.  Uses new backend support for
setting the closure chain in a call from C via
__builtin_call_with_static_chain.  Uses new support in libffi
for Go closures.

The old architecture specific support for reflect.MakeFunc is
removed, replaced by the libffi support.

All work done by Richard Henderson.

	* go-gcc.cc (Gcc_backend::call_expression): Add chain_expr argument.
	(Gcc_backend::static_chain_variable): New method.

From-SVN: r219776
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change from using __go_set_closure to passing the closure
value in the static chain field.  Uses new backend support for
setting the closure chain in a call from C via
__builtin_call_with_static_chain.  Uses new support in libffi
for Go closures.

The old architecture specific support for reflect.MakeFunc is
removed, replaced by the libffi support.

All work done by Richard Henderson.

	* go-gcc.cc (Gcc_backend::call_expression): Add chain_expr argument.
	(Gcc_backend::static_chain_variable): New method.

From-SVN: r219776
</pre>
</div>
</content>
</entry>
<entry>
<title>reflect, runtime: Use libffi closures to implement reflect.MakeFunc.</title>
<updated>2014-07-19T21:36:26+00:00</updated>
<author>
<name>Ian Lance Taylor</name>
<email>ian@gcc.gnu.org</email>
</author>
<published>2014-07-19T21:36:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=dffa7328356257772dc7c00fe73aeb315229b373'/>
<id>dffa7328356257772dc7c00fe73aeb315229b373</id>
<content type='text'>
Keep using the existing 386 and amd64 code on those archs,
since it is more efficient.

From-SVN: r212853
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Keep using the existing 386 and amd64 code on those archs,
since it is more efficient.

From-SVN: r212853
</pre>
</div>
</content>
</entry>
<entry>
<title>reflect: Handle calls to functions that take or return empty structs</title>
<updated>2013-11-19T02:30:03+00:00</updated>
<author>
<name>Ian Lance Taylor</name>
<email>ian@gcc.gnu.org</email>
</author>
<published>2013-11-19T02:30:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=41674b9fe4c0beb00ac29c32a2085fa670e863a9'/>
<id>41674b9fe4c0beb00ac29c32a2085fa670e863a9</id>
<content type='text'>
Fixes issue 6761

This simple change seems to work fine, slightly to my surprise.

This includes the tests I submitted to the main Go repository at
https://codereview.appspot.com/26570046

From-SVN: r205001
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes issue 6761

This simple change seems to work fine, slightly to my surprise.

This includes the tests I submitted to the main Go repository at
https://codereview.appspot.com/26570046

From-SVN: r205001
</pre>
</div>
</content>
</entry>
<entry>
<title>libgo: Update to October 24 version of master library.</title>
<updated>2013-11-06T19:49:01+00:00</updated>
<author>
<name>Ian Lance Taylor</name>
<email>ian@gcc.gnu.org</email>
</author>
<published>2013-11-06T19:49:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=f038dae646bac2b31be98ab592c0e5206d2d96f5'/>
<id>f038dae646bac2b31be98ab592c0e5206d2d96f5</id>
<content type='text'>
From-SVN: r204466
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
From-SVN: r204466
</pre>
</div>
</content>
</entry>
</feed>
