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/parser.js | |
parent | ee99b2e41f47cdaa71fa9b16bdead0a95b928af2 (diff) |
fix for 'sret' & other GEP features
Diffstat (limited to 'src/parser.js')
-rw-r--r-- | src/parser.js | 5 |
1 files changed, 3 insertions, 2 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 |