diff options
author | alon@honor <none@none> | 2010-08-29 17:36:10 -0700 |
---|---|---|
committer | alon@honor <none@none> | 2010-08-29 17:36:10 -0700 |
commit | c203d5c8e027a2cf0bea23540fc0edf93e4e37eb (patch) | |
tree | 8b178ae06879148978c6052fd2bb9ecd5caf8037 /src | |
parent | ee99b2e41f47cdaa71fa9b16bdead0a95b928af2 (diff) |
fix for 'sret' & other GEP features
Diffstat (limited to 'src')
-rw-r--r-- | src/parser.js | 5 | ||||
-rw-r--r-- | src/utility.js | 4 |
2 files changed, 5 insertions, 4 deletions
diff --git a/src/parser.js b/src/parser.js index 8997d3c4..7f25d2e5 100644 --- a/src/parser.js +++ b/src/parser.js @@ -226,9 +226,10 @@ function parseParamTokens(params) { function parseGetElementPtr(segment) { segment = segment.slice(0); - if (segment[1].text === 'noalias') { + while (['noalias', 'sret', 'nocapture', 'nest', 'zeroext', 'signext'].indexOf(segment[1].text) != -1) { segment.splice(1, 1); } + assertTrue(['inreg', 'byval'].indexOf(segment[1].text) == -1); var ret = { intertype: 'getelementptr', type: segment[0], @@ -471,7 +472,7 @@ function intertyper(data) { selectItem: function(item) { return item.tokens && item.tokens.length >= 3 && item.indent === 0 && item.tokens[1].text == '=' }, processItem: function(item) { if (item.tokens[2].text == 'type') { - dprint('linenum: ' + item.lineNum + ':' + dump(item)); + //dprint('type/const linenum: ' + item.lineNum + ':' + dump(item)); var fields = []; if (item.tokens[3].text != 'opaque') { if (item.tokens[3].type == '<') // type <{ i8 }> XXX - check spec diff --git a/src/utility.js b/src/utility.js index f95e81f1..94a2132a 100644 --- a/src/utility.js +++ b/src/utility.js @@ -1,7 +1,7 @@ function dump(item) { try { - return JSON.stringify(item); + return JSON.stringify(item).substr(0,200); } catch(e) { var ret = []; for (var i in item) { @@ -12,7 +12,7 @@ function dump(item) { ret.push(i + ': [?]'); } } - return ret.join(', '); + return ret.join(', ').substr(0,200); } } |