diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-07-08 13:14:31 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-07-08 13:14:31 -0700 |
commit | 282c638020457818f324dfc539338a886a3f464b (patch) | |
tree | 064de0d001cd33a9b3bb564cb7a6c2a8ef789146 | |
parent | f30049631089d40f4591a1b24ef5f5d75777ee3c (diff) |
fix for getFastValue with subtracting a negative
-rw-r--r-- | src/parseTools.js | 2 | ||||
-rw-r--r-- | tests/cases/subnums.ll | 18 | ||||
-rw-r--r-- | tests/cases/subnums.txt | 1 |
3 files changed, 20 insertions, 1 deletions
diff --git a/src/parseTools.js b/src/parseTools.js index 4f2f7142..86e3c643 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -1171,7 +1171,7 @@ function getFastValue(a, op, b, type) { if (op == 'pow') { return Math.pow(a, b).toString(); } else { - return eval(a + op + b).toString(); + return eval(a + op + '(' + b + ')').toString(); // parens protect us from "5 - -12" being seen as "5--12" which is "(5--)12" } } if (op == 'pow') { diff --git a/tests/cases/subnums.ll b/tests/cases/subnums.ll new file mode 100644 index 00000000..981a1592 --- /dev/null +++ b/tests/cases/subnums.ll @@ -0,0 +1,18 @@ +; ModuleID = 'tests/hello_world.bc' +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128" +target triple = "i386-pc-linux-gnu" + +@.str = private unnamed_addr constant [15 x i8] c"hello, world! %d\0A\00", align 1 ; [#uses=1 type=[18 x i8]*] + +; [#uses=0] +define i32 @main() { +entry: + %retval = alloca i32, align 4 ; [#uses=1 type=i32*] + %sub = sub nsw i32 0, -2147483648 + store i32 %sub, i32* %retval + %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([18 x i8]* @.str, i32 0, i32 0), i32 %sub) ; [#uses=0 type=i32] + ret i32 1 +} + +; [#uses=1] +declare i32 @printf(i8*, ...) diff --git a/tests/cases/subnums.txt b/tests/cases/subnums.txt new file mode 100644 index 00000000..e8831e0b --- /dev/null +++ b/tests/cases/subnums.txt @@ -0,0 +1 @@ +hello, world! -2147483648 |