------- Comment #1 from pinskia at gmail dot com  2008-04-17 19:58 -------
Subject: Re:   New: Local variables interpreted as volatile following a @try
block



Sent from my iPhone

On Apr 17, 2008, at 12:37, "ymeroz at earthlink dot net"
<[EMAIL PROTECTED] 
 > wrote:

> Test case:
> ----------------- start file bug.mm
> @interface TestClass
> -(void) testMethod;
> @end
>
> void ff (int& i)
> {
> }
>
> @implementation TestClass
>
> -(void) testMethod
> {
>        int i = 1;
>        int& iref = i;
>
>        @try
>        {}
>        @catch (id)
>        {}
>        @finally
>        {}
>
>        ff (i);                         // Bug
>        ff (iref);                      // OK
> }
> @end
>
> ----------------- end file

This is a side effect of how the next runtime implements their  
exceptions.


>
>
> gcc --version
> i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build  
> 5370)
>
> gcc-4.0 -x objective-c++ -fobjc-exceptions -c bug.mm
>
> bug.mm: In function 'void -[TestClass testMethod](TestClass*,  
> objc_selector*)':
> bug.mm:23: error: invalid initialization of reference of type 'int&'  
> from
> expression of type 'volatile int'
> bug.mm:5: error: in passing argument 1 of 'void ff(int&)'
>
> Summary:
> Adding Obj-C try/catch/finally blocks causes i to be considered  
> volatile
> afterwards.
>
> Workaround:
> Create a reference to i and use that instead.
>
>
> -- 
>           Summary: Local variables interpreted as volatile following  
> a @try
>                    block
>           Product: gcc
>           Version: 4.0.1
>            Status: UNCONFIRMED
>          Severity: normal
>          Priority: P3
>         Component: objc++
>        AssignedTo: unassigned at gcc dot gnu dot org
>        ReportedBy: ymeroz at earthlink dot net
>
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35967
>


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35967

Reply via email to