aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/parseTools.js21
-rw-r--r--tests/runner.py15
2 files changed, 20 insertions, 16 deletions
diff --git a/src/parseTools.js b/src/parseTools.js
index 2e5e109d..167ba074 100644
--- a/src/parseTools.js
+++ b/src/parseTools.js
@@ -1014,13 +1014,19 @@ function finalizeLLVMParameter(param) {
function makeSignOp(value, type, op) {
if (!value) return value;
- if (!correctSigns() && !CHECK_SIGNS) return value;
+ var bits, full;
if (type in Runtime.INT_TYPES) {
- var bits = parseInt(type.substr(1));
+ bits = parseInt(type.substr(1));
+ full = op + 'Sign(' + value + ', ' + bits + ', ' + Math.floor(correctSpecificSign() && !AUTO_OPTIMIZE) + (
+ AUTO_OPTIMIZE ? ', "' + Debugging.getIdentifier(Framework.currItem.lineNum) + '"' : ''
+ ) + ')';
+ // Always sign/unsign constants at compile time, regardless of CHECK/CORRECT
if (isNumber(value)) {
- // Sign/unsign constants at compile time
- return eval(op + 'Sign(' + value + ', ' + bits + ', 1)').toString();
+ return eval(full).toString();
}
+ }
+ if (!correctSigns() && !CHECK_SIGNS) return value;
+ if (type in Runtime.INT_TYPES) {
// shortcuts for 32-bit case
if (bits === 32 && !CHECK_SIGNS) {
if (op === 're') {
@@ -1029,12 +1035,9 @@ function makeSignOp(value, type, op) {
return '((' + value + ')>>>0)';
}
}
- return op + 'Sign(' + value + ', ' + bits + ', ' + Math.floor(correctSpecificSign() && !AUTO_OPTIMIZE) + (
- AUTO_OPTIMIZE ? ', "' + Debugging.getIdentifier(Framework.currItem.lineNum) + '"' : ''
- ) + ')'; // If we are correcting a specific sign here, do not check for it
- } else {
- return value;
+ return full;
}
+ return value;
}
function makeRounding(value, bits, signed) {
diff --git a/tests/runner.py b/tests/runner.py
index 54542db1..a1985df7 100644
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -1776,13 +1776,6 @@ if 'benchmark' not in sys.argv:
output = open(path_from_root('tests', 'raytrace.ppm'), 'r').read()
self.do_test(src, output, ['3', '16'])
- def test_dlmalloc(self):
- # XXX Warning: Running this in SpiderMonkey can lead to an extreme amount of memory being
- # used, see Mozilla bug 593659.
- global CORRECT_SIGNS; CORRECT_SIGNS = 1 # Not sure why, but needed
- src = open(path_from_root('tests', 'dlmalloc.c'), 'r').read()
- self.do_test(src, '*1,0*')
-
def test_fasta(self):
results = [ (1,'''GG*ctt**tgagc*'''), (20,'''GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTT*cttBtatcatatgctaKggNcataaaSatgtaaaDcDRtBggDtctttataattcBgtcg**tacgtgtagcctagtgtttgtgttgcgttatagtctatttgtggacacagtatggtcaaa**tgacgtcttttgatctgacggcgttaacaaagatactctg*'''),
(50,'''GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA*TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACAT*cttBtatcatatgctaKggNcataaaSatgtaaaDcDRtBggDtctttataattcBgtcg**tactDtDagcctatttSVHtHttKtgtHMaSattgWaHKHttttagacatWatgtRgaaa**NtactMcSMtYtcMgRtacttctWBacgaa**agatactctgggcaacacacatacttctctcatgttgtttcttcggacctttcataacct**ttcctggcacatggttagctgcacatcacaggattgtaagggtctagtggttcagtgagc**ggaatatcattcgtcggtggtgttaatctatctcggtgtagcttataaatgcatccgtaa**gaatattatgtttatttgtcggtacgttcatggtagtggtgtcgccgatttagacgtaaa**ggcatgtatg*''') ]
@@ -1790,6 +1783,14 @@ if 'benchmark' not in sys.argv:
src = open(path_from_root('tests', 'fasta.cpp'), 'r').read()
self.do_test(src, j, [str(i)], lambda x: x.replace('\n', '*'), no_build=i>1)
+ def test_dlmalloc(self):
+ #global COMPILER_TEST_OPTS; COMPILER_TEST_OPTS = ['-g']
+ global CORRECT_SIGNS; CORRECT_SIGNS = 1
+ #global CORRECT_SIGNS_LINES; CORRECT_SIGNS_LINES = ['src.cpp:4816', 'src.cpp:4191']
+
+ src = open(path_from_root('tests', 'dlmalloc.c'), 'r').read()
+ self.do_test(src, '*1,0*', ['100'])
+
def zzztest_gl(self):
# Switch to gcc from g++ - we don't compile properly otherwise (why?)
global COMPILER