Initial commit of llgo.

llvm-svn: 222857
diff --git a/llgo/test/execution/interfaces/methods.go b/llgo/test/execution/interfaces/methods.go
new file mode 100644
index 0000000..5fb704c
--- /dev/null
+++ b/llgo/test/execution/interfaces/methods.go
@@ -0,0 +1,53 @@
+// RUN: llgo -o %t %s
+// RUN: %t 2>&1 | FileCheck %s
+
+// CHECK: X()
+// CHECK-NEXT: Y()
+// CHECK-NEXT: X()
+// CHECK-NEXT: Y()
+// CHECK-NEXT: X()
+
+package main
+
+type Stringer interface {
+	String() string
+}
+
+type X int
+type Y int
+
+type Z1 struct {
+	X
+}
+
+type Z2 struct {
+	Stringer
+}
+
+func (x X) String() string {
+	return "X()"
+}
+
+func (y *Y) String() string {
+	return "Y()"
+}
+
+func makeX() X {
+	return X(0)
+}
+
+func main() {
+	var z Stringer = X(0)
+	println(z.String())
+
+	z = new(Y)
+	println(z.String())
+
+	z = Z1{}
+	println(z.String())
+
+	z = Z2{new(Y)}
+	println(z.String())
+
+	println(makeX().String())
+}