diff options
author | alon@honor <none@none> | 2010-10-25 20:22:12 -0700 |
---|---|---|
committer | alon@honor <none@none> | 2010-10-25 20:22:12 -0700 |
commit | d6aefb39d6df0abf9104882fa89998e8e8b05dea (patch) | |
tree | c2192412ac67b7b2907c18329093230c35c3a691 | |
parent | fcb71c83e999564738683adfd2de8e1a915467ec (diff) |
fix for type of |inttoptr|,|ptrtoint|
-rw-r--r-- | src/intertyper.js | 8 | ||||
-rw-r--r-- | src/parseTools.js | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/intertyper.js b/src/intertyper.js index 98b117ff..958bd5af 100644 --- a/src/intertyper.js +++ b/src/intertyper.js @@ -549,11 +549,13 @@ function intertyper(data) { item['param'+i] = parseLLVMSegment(segments[i-1]); } } - if (item.op !== 'select') { - item.type = item.param1.type; - } else { + if (item.op === 'select') { assert(item.param2.type === item.param3.type); item.type = item.param2.type; + } else if (item.op === 'inttoptr' || item.op === 'ptrtoint') { + item.type = item.param2.type; + } else { + item.type = item.param1.type; } this.forwardItem(item, 'Reintegrator'); }, diff --git a/src/parseTools.js b/src/parseTools.js index fed60d77..3e65a039 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -288,7 +288,7 @@ function parseLLVMSegment(segment) { return { intertype: 'value', ident: segment[0].text, - type: '?', + type: isType(segment[0].text) ? segment[0].text : '?', }; } else if (segment[0].text in PARSABLE_LLVM_FUNCTIONS) { return parseLLVMFunctionCall([{text: '?'}].concat(segment)); |