Commit Graph

62 Commits

Author SHA1 Message Date
Chandler Carruth a5ecd8a9f7 [cmake/multilib] Teach llgo to respect the LLVM_LIBDIR_SUFFIX variable for
multilib build and installs.

Summary:
This requires introducing a generated header to encapsulate the
LLVM_LIBDIR_SUFFIX value from the build system and push it into the go
code. From there, I've adjusted the gllgo code to systematically use
this rather than a raw "lib". This requires some awkwardness as one of
the flags *must* be "lib"-relative for compatibility with how gccgo
works. For that flag, we use ".." to back up a directory and then go
into the proper lib directory.

Differential Revision: http://reviews.llvm.org/D6795

llvm-svn: 224964
2014-12-29 22:57:21 +00:00
Peter Collingbourne b113d0206e irgen: remove unused compiler.runtimetypespkg field.
llvm-svn: 224931
2014-12-29 13:01:28 +00:00
Peter Collingbourne b6edff93ae irgen: do not emit an extra terminator for panic thunks
Found with GoSmith.

Differential Revision: http://reviews.llvm.org/D6714

llvm-svn: 224904
2014-12-28 22:39:01 +00:00
Andrew Wilkins c17d0bbfb3 Test commit
Just changing whitespace to test commit access...

llvm-svn: 224565
2014-12-19 02:45:48 +00:00
Peter Collingbourne 1f89ffdf4d irgen: fix canAvoid*
Patch by Andrew Wilkins!

canAvoidElementLoad and canAvoidLoad were incorrectly
eliding loads when an index expression is used as an
another array index expression. This led to a panic.

See comments on https://github.com/go-llvm/llgo/issues/175

Test Plan: lit test added

Differential Revision: http://reviews.llvm.org/D6676

llvm-svn: 224420
2014-12-17 09:45:05 +00:00
Peter Collingbourne 545e7276a8 Use the object's package to mangle method names, rather than the receiver's package
If we use the receiver's package, we can end up with identical manglings
for different functions. Consider:

package p
type U struct{}
func (U) f()

package q
import "p"
type T struct { p.U }
func (T) f()

The method set of *T has two synthetic methods named (*T).f(); one forwards to
(T).f(), and the other to (U).f(). Previously, we were distinguishing them
by the receiver's package, and in this case because both methods have the
same receiver, they received the same name.

The methods are correctly distinguished by the package owning the identifier
"f", which is available via f.Object().Pkg().

Differential Revision: http://reviews.llvm.org/D6673

llvm-svn: 224357
2014-12-16 20:04:55 +00:00
Peter Collingbourne 8bcc05d5f4 Update to new bindings.
llvm-svn: 224180
2014-12-13 02:26:00 +00:00
Peter Collingbourne c5b84a53f7 Optimize comparisons to empty string.
Geo-mean performance improvement of 0.2% (-0.3% - 0.9% @ 95% CI).

Differential Revision: http://reviews.llvm.org/D6569

llvm-svn: 223728
2014-12-09 01:02:12 +00:00
Peter Collingbourne ac4744ec86 Add .arcconfig file.
llvm-svn: 223689
2014-12-08 20:12:22 +00:00
Peter Collingbourne 19048871b2 Roll gofrontend to 2a85649c19e1.
llvm-svn: 223385
2014-12-04 20:39:58 +00:00
Peter Collingbourne 594c10de22 Initial commit of llgo third_party.
llvm-svn: 222858
2014-11-27 00:12:26 +00:00
Peter Collingbourne ad9841e8ac Initial commit of llgo.
llvm-svn: 222857
2014-11-27 00:06:42 +00:00