diff options
-rw-r--r-- | src/analyzer.js | 3 | ||||
-rw-r--r-- | src/intertyper.js | 4 | ||||
-rw-r--r-- | src/settings.js | 1 |
3 files changed, 6 insertions, 2 deletions
diff --git a/src/analyzer.js b/src/analyzer.js index 494355c5..b23da395 100644 --- a/src/analyzer.js +++ b/src/analyzer.js @@ -221,6 +221,7 @@ function analyzer(data, givenTypes) { ident: item.ident, type: item.value.type, origin: item.value.intertype, + lineNum: item.lineNum, uses: parseInt(item.value.tokens.slice(-1)[0].item.tokens[0].text.split('=')[1]), }; } @@ -266,6 +267,8 @@ function analyzer(data, givenTypes) { var pointedType = removePointing(variable.type); if (variable.origin == 'getelementptr') { // Use our implementation that emulates pointers etc. + // XXX Can we perhaps nativize some of these? However to do so, we need to discover their + // true types; we have '?' for them now, as they cannot be discovered in the intertyper. variable.impl = VAR_EMULATED; } else if (OPTIMIZE && variable.pointingLevels === 0 && !variable.hasAddrTaken) { // A simple int value, can be implemented as a native variable diff --git a/src/intertyper.js b/src/intertyper.js index 78827e87..a19ed17a 100644 --- a/src/intertyper.js +++ b/src/intertyper.js @@ -482,7 +482,7 @@ function intertyper(data, parseFunctions, baseLineNum) { } } ]; var data = parseLLVMFunctionCall(segment); item.intertype = 'getelementptr'; - item.type = data.type; + item.type = '?'; // We need type info to determine this item.params = data.params; item.ident = data.ident; this.forwardItem(item, 'Reintegrator'); @@ -496,7 +496,7 @@ function intertyper(data, parseFunctions, baseLineNum) { item.tokens.splice(0, 1); } assertEq(item.tokens[0].text, 'call'); - if (['signext', 'zeroext', 'fastcc'].indexOf(item.tokens[1].text) != -1) { + while (['signext', 'zeroext', 'fastcc', 'noalias'].indexOf(item.tokens[1].text) != -1) { item.tokens.splice(1, 1); } item.type = item.tokens[1].text; diff --git a/src/settings.js b/src/settings.js index 95012abc..7312488b 100644 --- a/src/settings.js +++ b/src/settings.js @@ -39,6 +39,7 @@ DEBUG_TAGS_SHOWING = []; // enzymatic // gconst // types + // vars // relooping // unparsedFunctions |