Thank You David for your suggestion and feedback. I'll let you know my
final proposal (after the modification based on your feedback and my
latest study) as early as possible.

I would like to request everyone in this community to kindly enrich me
with more suggestions and guidance to prepare my final project
proposal for GSoC2012.

Thanks a lot to everyone for your active and helpful feedback!!!

On 26 March 2012 17:04, David Brown <da...@westcontrol.com> wrote:
> On 25/03/2012 11:55, Oleg Endo wrote:
>>
>> Please reply in CC to the GCC mailing list, so others can follow the
>> discussion.
>>
>> On Sun, 2012-03-25 at 09:21 +0530, Subrata Biswas wrote:
>>>
>>> On 25 March 2012 03:59, Oleg Endo<oleg.e...@t-online.de>  wrote:
>>>>
>>>>
>>>> I might be misunderstanding the idea...
>>>> Let's assume you've got a program that doesn't compile, and you leave
>>>> out those erroneous blocks to enforce successful compilation of the
>>>> broken program.  How are you going to figure out for which blocks it is
>>>> actually safe to be removed and for which it isn't?
>>>
>>>
>>> I can do it by tracing the code blocks which are dependent on the
>>> erroneous block. i.e if any block is data/control dependent(the output
>>> or written value of the erroneous part is read) on this erroneous
>>> block or line of code will be eliminated.
>>>
>>>> Effectively, you'll
>>>> be changing the original semantics of a program, and those semantic
>>>> changes might be completely not what the programmer originally had in
>>>> mind.  In the worst case, something might end up with an (un)formatted
>>>> harddisk...*
>>>>
>>>> Cheers,
>>>> Oleg
>>>>
>>> Thank you sir for your great feedback. You have understood it
>>> correctly. Now the programmer will be informed about the change in
>>> code and the semantics.(Notice that this plug-in is not going to
>>> modify the original code!, it just copy the original code and perform
>>> all the operations on the temporary file!!!) Even from the partial
>>> execution of the code the programmer will get an overview of his
>>> actual progress.
>>>
>>> suppose the program written by the programmer be:
>>>
>>> 1 int main(void)
>>> 2 {
>>> 3    int arr[]={3,4,-10,22,33,37,11};
>>> 4    sort(arr);
>>> 5    int a = arr[3] // Now suppose the programmer missed the semicolon
>>> here. Which generates a compilation error at line 5;
>>> 6    printf("%d\n",a);
>>> 7    for(i=0;i<7;i++)
>>> 8    {
>>> 9        printf("%d\n",arr[i]);
>>> 10    }
>>> 11  }
>>>
>>>
>>> Now if we just analyze the data (i.e. variable), we can easily find
>>> that there is only data dependency exists between line 5 and line 6.
>>> The rest of the program is not being effected due to elimination or
>>> commenting line 5.
>>>
>
> There is also a dependency between lines 6 and 9 - the second printf cannot
> be done until the first printf is complete.  Anything that involves calls to
> external code, or reading or writing volatile data, must be done in order
> and as specified, and cannot be omitted or re-arranged.  So if you omit the
> first printf, then you must omit all later external calls or volatile
> accesses.  And everything else is then subject to dead-code elimination
> because it has no effect, and can be omitted.
>
> In other words, the best you can do is spot the error, replace it with a
> call to abort(), and generate a partial execution up to the failing point.
>  There is no way to continue while still being the same program.  And if it
> is a different program, how does it help anyone to continue?
>
> I'd suggest then that you are better off thinking of a C interpreter, that
> will interpret and execute C code as it goes along.
>
>



-- 
Thanking You,

Regards
Subrata Biswas
MTech (pursuing)
Computer Science and Engineering
Indian Institute of Technology, Roorkee
Mob: +91 7417474559

Reply via email to