diff options
Diffstat (limited to 'src/parser.js')
-rw-r--r-- | src/parser.js | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/parser.js b/src/parser.js index 7f25d2e5..2d61b1b3 100644 --- a/src/parser.js +++ b/src/parser.js @@ -199,7 +199,8 @@ function parseParamTokens(params) { var segment = params.slice(0, i); //print(' seg ' + JSON.stringify(segment)); params = params.slice(i+1); - if (segment[1].text === 'getelementptr' || segment[1].text === 'noalias') { + segment = cleanSegment(segment); + if (segment[1].text === 'getelementptr') { ret.push(parseGetElementPtr(segment)); } else if (segment[1].text === 'bitcast') { ret.push(parseBitcast(segment)); @@ -224,12 +225,18 @@ function parseParamTokens(params) { return ret; } -function parseGetElementPtr(segment) { - segment = segment.slice(0); +function cleanSegment(segment) { while (['noalias', 'sret', 'nocapture', 'nest', 'zeroext', 'signext'].indexOf(segment[1].text) != -1) { segment.splice(1, 1); } + return segment; +} + +function parseGetElementPtr(segment) { + segment = segment.slice(0); + segment = cleanSegment(segment); assertTrue(['inreg', 'byval'].indexOf(segment[1].text) == -1); + //dprint('// zz: ' + dump(segment) + '\n\n\n'); var ret = { intertype: 'getelementptr', type: segment[0], |