2017-12-27 11 views
1

Meine Frage ist einfach. Bei einer Anweisung vom Typ Branch, wie extrahiere ich das Label daraus? Zum Beispiel:llvm - Get Label von Br Anweisung

br label %while.cond 

Sollte mir geben while.cond

br label %while.end 

mich Sollte geben while.end

br i1 %cmp1, label %if.then, label %if.end 

Sollte mir geben, wenn if.then, if.end jeweils .

+0

'inst-> getOperand (0)'? – arrowd

+0

Ich habe das versucht. Sie gibt die Bedingung in Fällen zurück, in denen sie existiert, und wenn nicht, wie in% if.end, gibt sie den gesamten Basisblock zurück. – eren555

Antwort

0

Prüfen Sie zuerst inst->isConditional(), greifen dann inst->getOperand(1) und inst->getOperand(2), falls es wahr ist, und inst->getOperand(0) wenn es falsch ist.

Der ganze BasicBlock ist was BranchInst tatsächlich akzeptiert. Wenn Sie %if.then Zeile möchten, dann rufen Sie getName() darauf.