2016-08-09 32 views
1

Zum Beispiel wenn ich den folgenden Code haben:In llvm ist es möglich, das letzte storeinst für eine alloca in Bezug auf eine Last zu bekommen?

alloca a; 
store 3, a; 
store 5, a; 
%x = load a 

Ist es möglich, einen Zeiger auf den neuesten Speicher, da der Ladebefehl zu bekommen?

Ich weiß, dass dies nicht die genaue llvm IR ist.

+0

Gehen Sie davon aus, dass sich das Geschäft im gleichen Grundblock befindet wie das Laden? – sepp2k

+0

Nicht unbedingt, aber es wird ein Anfang sein. –

+1

Wenn es nicht im selben Basisblock ist, gibt es normalerweise mehr als einen möglichen Speicher, der bei einer bestimmten Ladezeit aktuell sein kann. Darum habe ich gefragt. – sepp2k

Antwort

0

Eine sehr naive Art und Weise würde die Operandenwert

Value* llvm::LoadInst::getPointerOperand() 

und Back-Iterieren Code suchen sie bekommen.

Aber ich denke, dass die Dominanzanalyse Ihnen diese Art von Informationen gibt.