aboutsummaryrefslogtreecommitdiff
path: root/src/parser.js
diff options
context:
space:
mode:
authoralon@honor <none@none>2010-08-29 20:39:36 -0700
committeralon@honor <none@none>2010-08-29 20:39:36 -0700
commit7a0103b77e09097aa73ee8e137d826e6049bd2ac (patch)
tree5d5fed852c7234cd1180993618f9640b4212778c /src/parser.js
parentc203d5c8e027a2cf0bea23540fc0edf93e4e37eb (diff)
clean up segments from noalias etc.
Diffstat (limited to 'src/parser.js')
-rw-r--r--src/parser.js13
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],