This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Modifying the values of Gimple Instruction Operands
- From: Richard Biener <richard dot guenther at gmail dot com>
- To: tturhan at cs dot bilkent dot edu dot tr
- Cc: GCC Development <gcc at gcc dot gnu dot org>
- Date: Wed, 4 Sep 2013 10:18:12 +0200
- Subject: Re: Modifying the values of Gimple Instruction Operands
- Authentication-results: sourceware.org; auth=none
- References: <a5bc2c674019c3bdf17717f24afebfe5 dot squirrel at newmail dot bilkent dot edu dot tr> <f2e4141a002178044c53561d85b3da6e dot squirrel at newmail dot bilkent dot edu dot tr>
On Tue, Sep 3, 2013 at 7:59 PM, <tturhan@cs.bilkent.edu.tr> wrote:
> Sorry forgot to mention, my name is Tuncer.
>
> Again any help would be much appreciated.
> I know these maybe simple for some of you if you could lend me a hand, you
> will be doing a great deal of help.
>
> Changed the subject for better understanding,
>
> Thanks again guys :)
Something like
oldop = gimple_assign_rhs1 (stmt);
gsi = gsi_for_stmt (stmt);
newop = force_gimple_operand_gsi (&gsi, fold_build2 (BIT_IOR_EXPR,
TREE_TYPE (oldop), oldop, build_int_cst (TREE_TYPE (oldop), 1<<3)),
true, NULL_TREE, true, GSI_CONTINUE_LINKING);
gimple_assign_set_rhs1 (stmt, newop);
update_stmt (stmt);
>
>> Hi,
>>
>> I am a student at Bilkent Uni. in Turkey and using GCC as a tool for my
>> M.S. Thesis which is about Software Fault Tolerance.
>> I am stuck, in terms of implementing bit flips in the operands of a gimple
>> statement.
>>
>> I need to inject bit flips to all kinds of operands, constant integers,
>> floats, variables, pointers etc...
>>
>> It is simpler for constants, but I am having a hard time to get the value
>> of pointers and other variables.
>>
>> My objective is to simply change the value of a tree operand, by injecting
>> a new instruction that changes the value or directly change the operand to
>> a bit flipped value.
>>
>> For constant integers I did something like this:
>>
>> int valueBefore = TREE_INT_CST_LOW(operands[i]);
>> int valueAfter = (valueBefore ^ (1u << 2)); tree number =
>> build_int_cst (integer_type_node, valueAfter);
>>
>> I would love it if you can help me and
>> may even implement a tool for GCC for error injection purposes.
>>
>> Any help would be much appreciated!
>>
>> Thank you very much!
>>
>
>