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