diff options
-rw-r--r-- | src/intertyper.js | 15 | ||||
-rw-r--r-- | tests/cases/quotedlabel.ll | 19 |
2 files changed, 28 insertions, 6 deletions
diff --git a/src/intertyper.js b/src/intertyper.js index a1e1b0f2..7dafed6f 100644 --- a/src/intertyper.js +++ b/src/intertyper.js @@ -338,7 +338,8 @@ function intertyper(data, sidePass, baseLineNums) { return '/dev/null'; } else if (item.indent === 0) { if ((tokensLength >= 1 && token0Text.substr(-1) == ':') || - (tokensLength >= 3 && token1Text == '<label>')) + (tokensLength >= 3 && token1Text == '<label>') || + (tokensLength >= 2 && token1Text == ':')) return 'Label'; if (tokensLength >= 4 && token0Text == 'declare') return 'External'; @@ -547,13 +548,15 @@ function intertyper(data, sidePass, baseLineNums) { // label substrate.addActor('Label', { processItem: function(item) { + var rawLabel = item.tokens[0].text.substr(-1) == ':' ? + '%' + item.tokens[0].text.substr(0, item.tokens[0].text.length-1) : + (item.tokens[1].text == '<label>' ? + '%' + item.tokens[2].text.substr(1) : + '%' + item.tokens[0].text) + var niceLabel = toNiceIdent(rawLabel); return [{ intertype: 'label', - ident: toNiceIdent( - item.tokens[0].text.substr(-1) == ':' ? - '%' + item.tokens[0].text.substr(0, item.tokens[0].text.length-1) : - '%' + item.tokens[2].text.substr(1) - ), + ident: niceLabel, lineNum: item.lineNum }]; } diff --git a/tests/cases/quotedlabel.ll b/tests/cases/quotedlabel.ll new file mode 100644 index 00000000..d32e380a --- /dev/null +++ b/tests/cases/quotedlabel.ll @@ -0,0 +1,19 @@ +; ModuleID = '/tmp/emscripten/tmp/src.cpp.o' +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32" +target triple = "i386-pc-linux-gnu" + +@.str = private constant [14 x i8] c"hello, world!\00", align 1 ; [#uses=1] + +; [#uses=1] +declare i32 @puts(i8*) + +; [#uses=0] +define i32 @main() { +entry: + br label %"finish$$$" + +"finish$$$": ; preds = %entry + %0 = call i32 bitcast (i32 (i8*)* @puts to i32 (i32*)*)(i8* getelementptr inbounds ([14 x i8]* @.str, i32 0, i32 0)) ; [#uses=0] + ret i32 0 +} + |