aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-02-20 11:44:10 -0800
committerAlon Zakai <alonzakai@gmail.com>2012-02-20 11:44:10 -0800
commite6c060a3e0d27d75ef0bd1cc742147a198aef83e (patch)
treeafa4397bd391758fb117dc1ad2cf7c79bac3a2ed
parent2ab6820706ba72f333b710b4c097a745d5ea13a8 (diff)
generate signed legalized 32-bit chunks
-rw-r--r--src/analyzer.js2
-rwxr-xr-xtests/runner.py24
2 files changed, 25 insertions, 1 deletions
diff --git a/src/analyzer.js b/src/analyzer.js
index 14a4f7de..593b4650 100644
--- a/src/analyzer.js
+++ b/src/analyzer.js
@@ -140,7 +140,7 @@ function analyzer(data, sidePass) {
var ret = new Array(Math.ceil(bits/32));
var i = 0;
while (bits > 0) {
- ret[i] = { ident: parsed[i].toString(), bits: Math.min(32, bits) };
+ ret[i] = { ident: (parsed[i]|0).toString(), bits: Math.min(32, bits) }; // resign all values
bits -= 32;
i++;
}
diff --git a/tests/runner.py b/tests/runner.py
index 2a389348..217a34bf 100755
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -678,6 +678,30 @@ if 'benchmark' not in str(sys.argv) and 'sanity' not in str(sys.argv):
self.do_run(src, '*1329409676000000,1329412005509675,3663280683,309527*\n')
+ def test_i64_cmp(self):
+ if Settings.USE_TYPED_ARRAYS != 2: return self.skip('full i64 stuff only in ta2')
+
+ src = r'''
+ #include <stdio.h>
+
+ typedef long long int64;
+
+ bool compare(int64 val) {
+ return val == -12;
+ }
+
+ bool compare2(int64 val) {
+ return val < -12;
+ }
+
+ int main(int argc, char * argv[]) {
+ printf("*%d,%d,%d,%d,%d,%d*\n", argc, compare(argc-1-12), compare(1000+argc), compare2(argc-1-10), compare2(argc-1-14), compare2(argc+1000));
+ return 0;
+ }
+ '''
+
+ self.do_run(src, '*1,1,0,0,1,0*\n')
+
def test_unaligned(self):
if Settings.QUANTUM_SIZE == 1: return self.skip('No meaning to unaligned addresses in q1')