[LLVMdev] Prevent instruction elimination

Xinfinity xinfinity_a at yahoo.com
Tue Oct 26 09:23:51 PDT 2010


Hello,


Devang Patel wrote:
> 
> 
> On Oct 25, 2010, at 12:09 PM, Xinfinity wrote:
> 
>> #pragma my_pragma{
>>  code
>> }
> 
>> I use a map
>> (source_location, pragma) and I insert the dummy instruction when this
>> location is reached in the code generator. It seems difficult to attach
>> the
>> metadata to the first and the last instruction emitted for the compound
>> statement, as the "code" inside the pragma region can be anything.
>> 
>> Do you consider it would be a better idea to attach metadata to all
>> instructions emitted between source_location marking the beginning and
>> the
>> source_location marking the end of the region?
> 
> Yes, that's how, now, we keep track of lexical scopes for debug info's
> use.
> -
> Devang
> 
> 
It seems I need some more guidance in these matters. So the plan is to
attach metadata to all instructions contained in the scope of the pragma. In
this respect, I create a boolean inside CodeGenFunction which is set to true
once we reach the pragma and reset to false, when we exit the pragma scope.
The set and reset functions are called from 
CGStmt in EmitCompoundStmt, if there is a pragma corresponding to the left
brace and the right brace of the compound statement.

Next, I tried to attach metadata to all instructions emitted, if the boolean
is set to true. However this is rather a tedious work, as it implies
modifying all files in clang::CodeGen. Actually, for each generated
instruction I should check if it is in the pragma region and in this case
attach metadata info. I am not sure if tracking all the instructions and
verifying them is the best idea.

Another idea would be to create a boolean as part of the IRBuilder and set
it from CodeGen. And for each instruction inserted by the IRBuilder to check
the boolean and attach metadata if necessary. But I think this is too
specialized to my particular needs and it would not be a good solution.
Is there a cleaner method? 

Thanks,
Alexandra
-- 
View this message in context: http://old.nabble.com/Prevent-instruction-elimination-tp30046067p30059252.html
Sent from the LLVM - Dev mailing list archive at Nabble.com.




More information about the llvm-dev mailing list