Is it possible that your clang is buggy? I'm also using clang with the 
following cflags: -g3 -O2 -Wall -Wextra -Wshadow -Wno-type-limits 
-Wpointer-arith -Wno-missing-field-initializers -Wstrict-prototypes 
-fvisibility=hidden
Clang version: 3.7.1

Zero warnings.

Looking at the code, zero warnings is correct, because the result is used.

--
Tom.


On 10/03/16 06:48, Jean-Philippe André wrote:
> Oh and I forgot, those changes add ~60 warnings in EFL with clang:
>
>    CC       lib/evas/canvas/lib_evas_libevas_la-evas_object_line.lo
> /home/jpeg/e/core/efl/src/lib/evas/canvas/evas_object_line.c:101:5:
> warning: expression result unused [-Wunused-value]
>     ((Eo *) ( *&eo_obj =
> _eo_add_internal_start("/home/jpeg/e/core/efl/src/lib/evas/canvas/evas_object_line.c",
> 101, evas_line_class_get(), e, ((Eina_Bool)0)), *&eo_obj =
> _eo_add_end(*&eo_obj) ));
>
>
> On 10 March 2016 at 15:46, Jean-Philippe André <j...@videolan.org> wrote:
>
>>
>>
>> On 10 March 2016 at 15:05, Carsten Haitzler <ras...@rasterman.com> wrote:
>>
>>> On Thu, 10 Mar 2016 07:42:22 +0200 Daniel Zaoui <daniel.za...@samsung.com>
>>> said:
>>>
>>>> On Wed, 09 Mar 2016 16:23:04 +0000
>>>> Tom Hacohen <t...@osg.samsung.com> wrote:
>>>>
>>>>> On 03/03/16 10:22, Tom Hacohen wrote:
>>>>>> On 01/03/16 09:05, Tom Hacohen wrote:
>>>>>>> Hey,
>>>>>>>
>>>>>>> The Eo syntax is going to be changing once more, and this time, I
>>>>>>> really think/hope it'll be the last time. We plan on stabilizing
>>>>>>> Eo and all of the functions on top of it in the next few months,
>>>>>>> so that doesn't leave us much more time to change it again. :)
>>>>>>>
>>>>>>> These changes will remove the need for the eo_do family of
>>>>>>> functions. Functions will now look like normal C functions (which
>>>>>>> they are). There are many benefits to that, and we have many cool
>>>>>>> new ideas.
>>>>>>>
>>>>>>> For more info: https://phab.enlightenment.org/w/eo/
>>>>>>>
>>>>>>> I'm sending this email as an head's up, as I'll be starting to
>>>>>>> work on migrating to the new Eo syntax (and implementing it)
>>>>>>> today. Felipe and I have actually already started (needed to for
>>>>>>> the PoC), but I plan on pushing my changes to master soon.
>>>>>>>
>>>>>>> If you have any issues/suggestions/comments with the proposal,
>>>>>>> please let me know, either in pm, irc or just here.
>>>>>>>
>>>>>>
>>>>>> Changes are in! I still haven't migrated eo_add to the new syntax
>>>>>> (it uses a non portable gcc extension in the meanwhile), but
>>>>>> otherwise everything is in. Took me *much* less time than I thought
>>>>>> it would, so yay. :P
>>>>>>
>>>>>> I decided to push it now instead of letting it rest in my branch
>>>>>> for a while because literally every hour that passed introduced
>>>>>> more merge conflicts for me, so the benefits from stabilising it
>>>>>> more in my branch were diminished by the new conflicts and issues
>>>>>> that could arise.
>>>>>>
>>>>>> If you have an application that uses the Eo api, you can use my
>>>>>> script https://devs.enlightenment.org/~tasn/migrate_eo.py to
>>>>>> migrate your code. When using the script you should keep two things
>>>>>> in mind: 1. You are only allowed to run it *once* per source code,
>>>>>> because the changes to eo_add() would otherwise accumulate and your
>>>>>> code will be wrong. If you need to correct something you've done
>>>>>> wrong, reset the code to the previous state and run the script
>>>>>> again on the original code. 2. The migration script is not perfect.
>>>>>> In particular it can't deal with some corner cases like:
>>>>>> eo_do(obj, a_set(1),
>>>>>> /* b_set(2),
>>>>>>       g_set(4), */
>>>>>>    c_set(2));
>>>>>> Or abominations like:
>>>>>> eo_do(obj, if (a_get())
>>>>>>    do_something());
>>>>>>
>>>>>> So please be aware of that and *manually* review your changes after
>>>>>> the script has run.
>>>>>>
>>>>>> If your code does have these cases, I recommend you either get rid
>>>>>> of them, or manually migrate that code before running the script
>>>>>> (remove the relevant eo_do).
>>>>>>
>>>>>> Follow the wiki page mentioned in the previous email for more
>>>>>> information about Eo and what else needs changing.
>>>>>>
>>>>>> Please let me know about any regressions (there shouldn't be any)
>>>>>> or any issues you may face.
>>>>>
>>>>> I'm now pushing my changes to eo_add. I'm pushing it now for the same
>>>>> reason I pushed the previous changes in.
>>>>>
>>>>> I created a new script that assumes the code has already been
>>>>> migrated with the previous (migrate_eo.py) script. This script is
>>>>> called migrate_eo_add.py and can be found at:
>>>>> https://devs.enlightenment.org/~tasn/migrate_eo_add.py
>>>>>
>>>>> When using the script you should keep two things in mind:
>>>>> 1. You are only allowed to run it *once* per source code, because the
>>>>> changes to eo_add() would otherwise accumulate and your code will be
>>>>> wrong. If you need to correct something you've done wrong, reset the
>>>>> code to the previous state and run the script again on the original
>>>>> code. 2. The migration script is not perfect. In particular it can't
>>>>> deal with cases like missing {} for if/for/while content so for
>>>>> example,
>>>>>
>>>>> if ()
>>>>>      return eo_add(...)
>>>>>
>>>>> would break.
>>>>> 3. If you are fancy and use the same variable inside eo_add and
>>>>> outside, for example like:
>>>>> parent = eo_add(CLASS, parent);
>>>>>
>>>>> your code will break. I suggest you use a temporary variable.
>>>>>
>>>>> So please be aware of that and *manually* review your changes after
>>>>> the script has run.
>>>>>
>>>>> If your code does have these cases, I recommend you either get rid of
>>>>> them, or manually migrate that code before running the script (remove
>>>>> the relevant eo_do).
>>>>>
>>>>>
>>>>>
>>>>> Sorry, but C++ will break until the C++ guys fix it. I'm now in the
>>>>> process of migrating the rest of our applications. Hopefully this
>>>>> will be the last disruption of this sort.
>>>>>
>>>>
>>>> Sorry man but the new syntax is ugly. I still don't see why this change
>>> was
>>>> needed. Please enlighten me. It reminds me the wonderful eo_do_ret
>>> syntax :-)
>>>>
>>>> So yes Tom I vomit on your eo_add
>>>>
>>>>
>>>>                    BBEEEUUUUUUAAAAAHHHHH...
>>>>
>>>>                      %%%%%%
>>>>                     %%%% = =
>>>>                     %%C    >
>>>>                      _)' _( .' ,
>>>>                   __/ |_/\   " *. o
>>>>                  /` \_\ \/     %`= '_  .
>>>>                 /  )   \/|      .^',*. ,
>>>>                /' /-   o/       - " % '_
>>>>               /\_/     <       = , ^ ~ .
>>>>               )_o|----'|          .`  '
>>>>           ___// (_  - (\           eo_add(&obj...
>>>>          ///-(    \'   \\
>>>
>>> bwhahahahahha.
>>
>>
>>> the reason was eo add methods.
>>>
>>> obj = eo_add(..., text_set(obj, "x"), color_set(obj, 1, 2, 3, 4));
>>>
>>> because eo4 changes to pass obj into every method - that means obj has to
>>> be
>>> filled and defined with the RIGHT eo id before the extra text_set() is
>>> called
>>> because it passes it in, thus you have to pass a ptr to the eiod so it
>>> can be
>>> filled in first so it is correct for the following calls within the
>>> eo_add.
>>>
>>
>> I know you don't like it but I can see two solutions to that:
>> 1. a different macro for eo_add() that doesn't allow any function calls
>> before finalize (I believe it would be used quite often)
>> 2. use a tls to store the currently created obj and add a macro to get it
>> in those inlined function calls, eg.
>>   obj = eo_add(CLASS, parent, do_something(eo_cur))
>>
>> wrt. 1. I wonder how the bindings will even be able to create objects and
>> call functions before finalize?
>>
>> Best regards,
>>
>> --
>> Jean-Philippe André
>>
>
>
>


------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to