Commit Graph

1474 Commits

Author SHA1 Message Date
Alexander Gorshenev 26e3101014 Now we can add metadata nodes to bitcode module.
We just put in the names of functions for now.
2016-11-07 18:14:50 +03:00
Alexander Gorshenev f76a4f6dc9 A simple protobuf description for bitcode metadata 2016-11-07 18:14:50 +03:00
Alexander Gorshenev 62f8b31cf0 Google protobuf has been added to the build 2016-11-07 18:14:50 +03:00
Konstantin Anisimov d4c3d6dabd plus'n'minus_eq operation: support for integer comparison operations
for code (plus_eq):

--------------8<------------------
> cat ../backend.native/tests/codegen/function/plus_eq.kt
fun plus_eq(a: Int): Int {
  var b = 11
  b += a
  return b
}
--------------8<------------------

generator produces:

--------------8<------------------
> llvm-dis-mp-3.8 ../backend.native/tests/codegen/function/plus_eq.kt.bc -o -
; ModuleID = '../backend.native/tests/codegen/function/plus_eq.kt.bc'
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.12.0"
....
define i32 @"kfun:plus_eq"(i32) {
entry:
  %a = alloca i32
  store i32 %0, i32* %a
  %b = alloca i32
  store i32 11, i32* %b
  %tmp1 = load i32, i32* %b
  %tmp2 = load i32, i32* %a
  %tmp0 = add i32 %tmp1, %tmp2
  store i32 %tmp0, i32* %b
  %tmp3 = load i32, i32* %b
  ret i32 %tmp3
}
--------------8<------------------

and for (minus_eq):

--------------8<------------------
> cat ../backend.native/tests/codegen/function/minus_eq.kt
fun minus_eq(a: Int): Int {
  var b = 11
  b -= a
  return b
}

--------------8<------------------

generator produces:

--------------8<------------------
> llvm-dis-mp-3.8 ../backend.native/tests/codegen/function/minus_eq.kt.bc -o -
; ModuleID = '../backend.native/tests/codegen/function/minus_eq.kt.bc'
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.12.0"
...
define i32 @"kfun:minus_eq"(i32) {
entry:
  %a = alloca i32
  store i32 %0, i32* %a
  %b = alloca i32
  store i32 11, i32* %b
  %tmp1 = load i32, i32* %b
  %tmp2 = load i32, i32* %a
  %tmp0 = sub i32 %tmp1, %tmp2
  store i32 %tmp0, i32* %b
  %tmp3 = load i32, i32* %b
  ret i32 %tmp3
}
--------------8<------------------
2016-11-07 18:00:30 +03:00
Konstantin Anisimov ea149fab4e Tests for "PLUSEQ" and "MINUSEQ" 2016-11-07 18:00:30 +03:00
Nikolay Igotti a022b7d1ab Char constants. 2016-11-07 17:42:29 +03:00
Konstantin Anisimov 3c68ee4ce5 testsuite updated to reflect recent changes in codegen: branch support 2016-11-07 17:34:01 +03:00
Vasily Levchenko 76ee79adc0 branching: branch suppport introduced
--------------8<----------------
> cat if_else.kt
fun if_else(b: Boolean): Int {
  if (b) return 42
  else   return 24
}
--------------8<----------------
we've got following bitcode:
--------------8<----------------
; ModuleID = '../backend.native/tests/codegen/branching/if_else.kt.bc'
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.12.0"
...

define i32 @"kfun:if_else"(i1) {
entry:
  %b = alloca i1
  store i1 %0, i1* %b
  %tmp0 = load i1, i1* %b
  br i1 %tmp0, label %label_0, label %label_1

label_0:                                          ; preds = %entry
  ret i32 42

label_1:                                          ; preds = %entry
  ret i32 24
}
...
--------------8<----------------
2016-11-07 17:34:01 +03:00
Vasily Levchenko 147de5d3ad added .usr/bin path to tools chain to take right variants of binutils from our system archieve 2016-11-07 17:25:08 +03:00
Nikolay Igotti f06aeef9ce Some work for string concatenation. (#40) 2016-11-07 15:58:11 +03:00
Svyatoslav Scherbina 451ac00087 backend/tests: enable hello0 2016-11-07 17:42:47 +07:00
Svyatoslav Scherbina 674713f429 backend: instantiate string literals statically
also improve other code for static instantiation
2016-11-07 17:42:47 +07:00
vvlevchenko fddaea5624 Merge pull request #34 from JetBrains/ir-processing-refactoring
Ir processing refactoring
2016-11-03 20:42:32 +03:00
Vasily Levchenko 8880a8b7a9 disable object initialization test 2016-11-03 18:34:35 +03:00
Konstantin Anisimov fb1652a1d5 refactoring: refactoring: reordering, splitting.
(cherry picked from commit 89fc5d6416a6e7075901ac19dea44475f7184fd3)
2016-11-03 18:34:35 +03:00
Nikolay Igotti 922cb1f35d Fix problems with kotlin.Number 2016-11-03 18:28:02 +03:00
Nikolay Igotti 96dfcba997 Generate interface RTTI properly. 2016-11-03 18:13:55 +03:00
vvlevchenko 152b8752d0 Merge pull request #32 from JetBrains/ir-processing-enchancements
ir-enchancement:support operations with variables and block processing
2016-11-03 17:15:52 +03:00
Konstantin Anisimov 4078e4004c tests for local variables 2016-11-03 16:19:03 +03:00
Vasily Levchenko 8de943bb8a ir-enchancement:support operations with variables and block processing 2016-11-03 16:19:03 +03:00
Nikolay Igotti a2e4f0f467 Move compiler to new version, add primitive types. (#33) 2016-11-03 15:31:33 +03:00
Vasily Levchenko c6a5ec26d9 stash conflict occsionaly commited removed 2016-11-03 06:29:41 +03:00
Vasily Levchenko 09fb11fbc9 linux run test fix (except RTTI linking problems) 2016-11-03 06:19:26 +03:00
Nikolay Igotti 1f90f32397 Fix backend.native:run 2016-11-03 00:22:04 +03:00
Svyatoslav Scherbina 58e8ed1850 backend/tests/build: fix compiler native library path 2016-11-02 17:02:14 +07:00
Svyatoslav Scherbina e7558f9ddc build: add target native SDK as downloadable dependency
also improve Gradle native toolchains configuration
2016-11-02 17:02:14 +07:00
Svyatoslav Scherbina db1853f627 runtime: remove unused test
to simplify build configuration
2016-11-02 17:02:14 +07:00
Nikolay Igotti 5966f69928 Add Base64 encoding for printable hashes (SHA1 hash is 30 bytes, City is 14). (#30) 2016-11-02 12:44:36 +03:00
Vasily Levchenko b3fb82da07 unwanted print 2016-11-01 21:58:02 +03:00
Vasily Levchenko ac761e0cbf unit tests and run tests are splitted
run tests can use golden value and test data to process and compare results
2016-11-01 21:49:20 +03:00
Nikolay Igotti 283303210f Rename kotlin_native -> kotlin. 2016-11-01 16:13:46 +03:00
Nikolay Igotti 7eeb2d3046 Various fixes for HelloWorld. (#27) 2016-11-01 15:33:41 +03:00
Nikolay Igotti b142d39dbc Merge pull request #28 from JetBrains/fix_void
Fix void calls.
2016-11-01 13:12:47 +03:00
Nikolay Igotti 7cf38d9501 Fix void calls. 2016-11-01 13:11:39 +03:00
Vasily Levchenko 08bfdb652c processing Call IR expressions and void functions (crash expected) 2016-11-01 12:48:46 +03:00
Vasily Levchenko ecdac4190c added processing of the BLOCK_BODY, for Unit function IR doesn't contein RETURN:
FUN public fun bar(i: kotlin.Int): kotlin.Unit
      BLOCK_BODY
for code:
fun bar(i:Int):Unit {}
2016-10-31 21:31:32 +03:00
Vasily Levchenko df9bf60c30 g/c: unused vars 2016-10-31 20:56:58 +03:00
Vasily Levchenko ae3fbfcc67 g/c: line balance 2016-10-31 20:56:58 +03:00
Vasily Levchenko 90883b6ced g/c: -linq 2016-10-31 20:56:58 +03:00
Nikolay Igotti 3bb20d2874 Merge pull request #25 from JetBrains/drop-kotlin-build
Use kotlin-compiler.jar from repo to get rid of building the Big Kotlin
2016-10-31 17:07:22 +03:00
Svyatoslav Scherbina 941f3b9bc5 remove backend.native/kotlin-ir submodule 2016-10-31 19:51:08 +07:00
Svyatoslav Scherbina 644add92e5 build: download dependencies from the bintray repo
which is accessible from the outside
2016-10-31 17:59:39 +07:00
Svyatoslav Scherbina 18ae8b2311 build: switch to Sonatype snapshots repo for kotlin-compiler
it is updated automatically by every successful build
2016-10-31 17:39:15 +07:00
Svyatoslav Scherbina 1b624ac88f backend: fix building against latest kotlin-compiler.jar 2016-10-31 16:01:24 +07:00
Svyatoslav Scherbina 394b4ce6ec backend/build: depend on kotlin-compiler.jar from repo
instead of the jars from backend.native/kotlin-ir
2016-10-31 13:32:02 +07:00
Svyatoslav Scherbina 74ab1503c3 Interop: make gradle plugin more friendly to complex dependency management
when representing dependencies as file collection
some meta information gets lost
2016-10-31 13:32:02 +07:00
Nikolay Igotti 8d2c0edd6b Implement instanceof checks. (#23) 2016-10-31 08:14:04 +03:00
KonstantinAnisimov e4d1557300 Merge pull request #18 from JetBrains/K2Native-minor-improvements
minor refactoring in native to frontend interface
2016-10-28 16:59:32 +03:00
Konstantin Anisimov 64e9f2a2f7 minor refactoring in native to frontend interface 2016-10-28 16:59:06 +03:00
Konstantin Anisimov 3617161247 numeric literal support:
define i32 @kfun:sum(i32) {
entry:
  %a = alloca i32
  store i32 %0, i32* %a
  %tmp1 = load i32, i32* %a
  %tmp0 = add i32 %tmp1, 33
  ret i32 %tmp0
}
2016-10-28 12:31:38 +03:00