Ok, I haven't reported the bug yet (because it has to go through
Apple's bugtracker), and it's boring...
If you want your gold star, I can let you fill the bug report :-) You
introduced this after all :p
Jean


On Sun, Oct 2, 2016 at 3:49 PM, Carsten Haitzler <ras...@rasterman.com> wrote:
> On Sun, 2 Oct 2016 10:21:01 +0200 "Jean Guyomarc'h" <jean.guyoma...@gmail.com>
> said:
>
>> Congratulations, you found an llvm bug :D
>> llvm 8.0.0 on osx now segfaults when compiling a file with eina_list
>>
>> Llvm tells me to report the bug, so I will, but I wonder what we
>> should do to handle this...
>> Jean
>
> yup. same issue.
>
> 2 warnings generated.
> 2 warnings generated.
> 2 warnings generated.
> 2 warnings generated.
> #0 0x00007fc74e7707d8 llvm::sys::PrintStackTrace(llvm::raw_ostream&) 
> (/usr/bin/../lib/libLLVM-3.8.so+0x5ef7d8)
> #1 0x00007fc74e76e3c6 llvm::sys::RunSignalHandlers() 
> (/usr/bin/../lib/libLLVM-3.8.so+0x5ed3c6)
> #2 0x00007fc74e76e5aa (/usr/bin/../lib/libLLVM-3.8.so+0x5ed5aa)
> #3 0x00007fc74d8770b0 __restore_rt (/usr/bin/../lib/libc.so.6+0x330b0)
> #4 0x00007fc74ec7fba7 llvm::SelectionDAGBuilder::getControlRoot() 
> (/usr/bin/../lib/libLLVM-3.8.so+0xafeba7)
> #5 0x00007fc74ecc32e3 
> llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::Instruction
>  const>, llvm::ilist_iterator<llvm::Instruction const>, bool&) 
> (/usr/bin/../lib/libLLVM-3.8.so+0xb422e3)
> #6 0x00007fc74ecc6395 
> llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) 
> (/usr/bin/../lib/libLLVM-3.8.so+0xb45395)
> #7 0x00007fc74ecc7d7c 
> llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) 
> (/usr/bin/../lib/libLLVM-3.8.so+0xb46d7c)
> #8 0x00007fc74fba8b04 (/usr/bin/../lib/libLLVM-3.8.so+0x1a27b04)
> #9 0x00007fc74e8bd8c2 llvm::FPPassManager::runOnFunction(llvm::Function&) 
> (/usr/bin/../lib/libLLVM-3.8.so+0x73c8c2)
> #10 0x00007fc74e8bdc8b llvm::FPPassManager::runOnModule(llvm::Module&) 
> (/usr/bin/../lib/libLLVM-3.8.so+0x73cc8b)
> #11 0x00007fc74e8bdfb4 llvm::legacy::PassManagerImpl::run(llvm::Module&) 
> (/usr/bin/../lib/libLLVM-3.8.so+0x73cfb4)
> #12 0x00000000006e9313 clang::EmitBackendOutput(clang::DiagnosticsEngine&, 
> clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions 
> const&, llvm::StringRef, llvm::Module*, clang::BackendAction, 
> llvm::raw_pwrite_stream*) (/usr/bin/clang-3.8+0x6e9313)
> #13 0x0000000000a42db1 (/usr/bin/clang-3.8+0xa42db1)
> #14 0x0000000000b8aaca clang::ParseAST(clang::Sema&, bool, bool) 
> (/usr/bin/clang-3.8+0xb8aaca)
> #15 0x00000000009c2a2e clang::FrontendAction::Execute() 
> (/usr/bin/clang-3.8+0x9c2a2e)
> #16 0x00000000009968a6 
> clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) 
> (/usr/bin/clang-3.8+0x9968a6)
> #17 0x0000000000a41c33 
> clang::ExecuteCompilerInvocation(clang::CompilerInstance*) 
> (/usr/bin/clang-3.8+0xa41c33)
> #18 0x00000000006a7918 cc1_main(llvm::ArrayRef<char const*>, char const*, 
> void*) (/usr/bin/clang-3.8+0x6a7918)
> #19 0x00000000006a3b38 main (/usr/bin/clang-3.8+0x6a3b38)
> #20 0x00007fc74d864291 __libc_start_main (/usr/bin/../lib/libc.so.6+0x20291)
> #21 0x00000000006a5889 _start (/usr/bin/clang-3.8+0x6a5889)
> Stack dump:
> 0.      Program arguments: /usr/bin/clang-3.8 -cc1 -triple 
> x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free 
> -disable-llvm-verifier -main-file-name ephysics_world.cpp -mrelocation-model 
> pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -fmath-errno 
> -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array 
> -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb 
> -ffunction-sections -fdata-sections -coverage-file 
> /home/raster/C/efl/src/lib/ephysics/.libs/lib_ephysics_libephysics_la-ephysics_world.o
>  -resource-dir /usr/bin/../lib/clang/3.8.1 -dependency-file 
> lib/ephysics/.deps/lib_ephysics_libephysics_la-ephysics_world.Tpo 
> -sys-header-deps -MP -MT 
> lib/ephysics/lib_ephysics_libephysics_la-ephysics_world.lo -D HAVE_CONFIG_H 
> -I . -I .. -I ../src/lib/efl -I /usr/include/bullet -I ../src/lib/ephysics -I 
> ../src/lib/ephysics -I ../src/bindings/cxx/ephysics -I 
> ../src/bindings/ephysics -I ../src/lib/emile -I ../src/lib/emile -I 
> ../src/lib/eo -I ../src/lib/eo -I ../
 src/lib
>  /ecore -I ../src/lib/ecore -I ../src/lib/efl -I ../src/lib/efl -I 
> ../src/lib/evas -I ../src/lib/evas -I ../src/lib/eina -I ../src/lib/eina -D 
> EFL_EPHYSICS_BUILD=1 -D PIC -D PIC -internal-isystem 
> /bin/../lib64/gcc/x86_64-pc-linux-gnu/6.1.1/../../../../include/c++/6.1.1 
> -internal-isystem 
> /bin/../lib64/gcc/x86_64-pc-linux-gnu/6.1.1/../../../../include/c++/6.1.1/x86_64-pc-linux-gnu
>  -internal-isystem 
> /bin/../lib64/gcc/x86_64-pc-linux-gnu/6.1.1/../../../../include/c++/6.1.1/backward
>  -internal-isystem /usr/local/include -internal-isystem 
> /usr/bin/../lib/clang/3.8.1/include -internal-externc-isystem /include 
> -internal-externc-isystem /usr/include -Wall -Wextra -Wpointer-arith 
> -Wno-missing-field-initializers -std=gnu++11 -fdeprecated-macro 
> -fdebug-compilation-dir /home/raster/C/efl/src -ferror-limit 19 
> -fmessage-length 196 -fvisibility hidden -fobjc-runtime=gcc -fcxx-exceptions 
> -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o 
> lib/ephysics/.libs/lib_ephysics_libephysics_la-ephy
 si
>  cs_world.o -x c++ lib/ephysics/ephysics_world.cpp
> 1.      <eof> parser at end of file
> 2.      Code generation
> 3.      Running pass 'Function Pass Manager' on module 
> 'lib/ephysics/ephysics_world.cpp'.
> 4.      Running pass 'X86 DAG->DAG Instruction Selection' on function 
> '@_Z16_simulate_worldsPv'
> clang-3.8: error: unable to execute command: Segmentation fault (core dumped)
> clang-3.8: error: clang frontend command failed due to signal (use -v to see 
> invocation)
> clang version 3.8.1 (tags/RELEASE_381/final)
> Target: x86_64-unknown-linux-gnu
> Thread model: posix
> InstalledDir: /bin
> clang-3.8: note: diagnostic msg: PLEASE submit a bug report to 
> http://llvm.org/bugs/ and include the crash backtrace, preprocessed source, 
> and associated run script.
> clang-3.8: note: diagnostic msg:
> ********************
>
> PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
> Preprocessed source(s) and associated run script(s) are located at:
> clang-3.8: note: diagnostic msg: /tmp/ephysics_world-8afc31.cpp
> clang-3.8: note: diagnostic msg: /tmp/ephysics_world-8afc31.sh
> clang-3.8: note: diagnostic msg:
>
> ********************
> make[5]: *** [Makefile:46771: 
> lib/ephysics/lib_ephysics_libephysics_la-ephysics_world.lo] Error 1
>
>
>> On Sat, Oct 1, 2016 at 5:38 PM, Carsten Haitzler <ras...@rasterman.com> 
>> wrote:
>> > raster pushed a commit to branch master.
>> >
>> > http://git.enlightenment.org/core/efl.git/commit/?id=a2d507d3bfd12b84620eb7361b8fd8f3a5ba0dda
>> >
>> > commit a2d507d3bfd12b84620eb7361b8fd8f3a5ba0dda
>> > Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
>> > Date:   Sat Oct 1 17:51:25 2016 +0900
>> >
>> >     eina list - make use of prefetch for minor speedups
>> >
>> >     i see a speedup of about 8% over a series of list walking and freeing
>> >     functions given this change. it's a small speedup but still not too
>> >     shabby just for some prefetches thrown in. ymmv depending on memory
>> >     subsystem, memory speed itself, cpu and architecture.
>> >
>> >     @optimize
>> > ---
>> >  src/lib/eina/eina_list.h | 34 +++++++++++++++++++++++++---------
>> >  1 file changed, 25 insertions(+), 9 deletions(-)
>> >
>> > diff --git a/src/lib/eina/eina_list.h b/src/lib/eina/eina_list.h
>> > index e35943e..146601d 100644
>> > --- a/src/lib/eina/eina_list.h
>> > +++ b/src/lib/eina/eina_list.h
>> > @@ -1411,12 +1411,16 @@ EAPI int                   eina_list_data_idx(const
>> > Eina_List *list, void *data)
>> >   *          For destructive operations such as this, consider
>> >   *          using EINA_LIST_FOREACH_SAFE().
>> >   */
>> > -#define EINA_LIST_FOREACH(list, l, data) \
>> > +#define EINA_LIST_FOREACH(list, l, _data)\
>> >    for (l = list,                         \
>> > -       data = eina_list_data_get(l);     \
>> > +       _data = eina_list_data_get(l),    \
>> > +       l ? (EINA_PREFETCH(l->next), EINA_PREFETCH(_data)) : EINA_PREFETCH
>> > (l); \
>> > +                                         \
>> >         l;                                \
>> > +                                         \
>> >         l = eina_list_next(l),            \
>> > -       data = eina_list_data_get(l))
>> > +       _data = eina_list_data_get(l),    \
>> > +       l ? (EINA_PREFETCH(l->next), EINA_PREFETCH(_data)) : EINA_PREFETCH
>> > (l))
>> >
>> >  /**
>> >   * @def EINA_LIST_REVERSE_FOREACH
>> > @@ -1469,12 +1473,14 @@ EAPI int                   eina_list_data_idx(const
>> > Eina_List *list, void *data)
>> >   *          For destructive operations such as this, consider
>> >   *          using EINA_LIST_REVERSE_FOREACH_SAFE().
>> >   */
>> > -#define EINA_LIST_REVERSE_FOREACH(list, l, data) \
>> > +#define EINA_LIST_REVERSE_FOREACH(list, l, _data)\
>> >    for (l = eina_list_last(list),                 \
>> > -       data = eina_list_data_get(l);             \
>> > +       _data = eina_list_data_get(l),            \
>> > +       l ? (EINA_PREFETCH(l->prev), EINA_PREFETCH(_data)) : EINA_PREFETCH
>> > (l); \ l;                                        \
>> >         l = eina_list_prev(l),                    \
>> > -       data = eina_list_data_get(l))
>> > +       _data = eina_list_data_get(l),            \
>> > +       l ? (EINA_PREFETCH(l->prev), EINA_PREFETCH(_data)) : EINA_PREFETCH
>> > (l))
>> >
>> >  /**
>> >   * @def EINA_LIST_FOREACH_SAFE
>> > @@ -1525,11 +1531,15 @@ EAPI int                   eina_list_data_idx(const
>> > Eina_List *list, void *data)
>> >  #define EINA_LIST_FOREACH_SAFE(list, l, l_next, data) \
>> >    for (l = list,                                      \
>> >         l_next = eina_list_next(l),                    \
>> > +       EINA_PREFETCH(l_next),                         \
>> >         data = eina_list_data_get(l);                  \
>> > +       EINA_PREFETCH(data),                           \
>> >         l;                                             \
>> >         l = l_next,                                    \
>> >         l_next = eina_list_next(l),                    \
>> > -       data = eina_list_data_get(l))
>> > +       EINA_PREFETCH(l_next),                         \
>> > +       data = eina_list_data_get(l),                  \
>> > +       EINA_PREFETCH(data))
>> >
>> >  /**
>> >   * @def EINA_LIST_REVERSE_FOREACH_SAFE
>> > @@ -1582,11 +1592,15 @@ EAPI int                   eina_list_data_idx(const
>> > Eina_List *list, void *data)
>> >  #define EINA_LIST_REVERSE_FOREACH_SAFE(list, l, l_prev, data) \
>> >    for (l = eina_list_last(list),                              \
>> >         l_prev = eina_list_prev(l),                            \
>> > +       EINA_PREFETCH(l_prev),                                 \
>> >         data = eina_list_data_get(l);                          \
>> > +       EINA_PREFETCH(data),                                   \
>> >         l;                                                     \
>> >         l = l_prev,                                            \
>> >         l_prev = eina_list_prev(l),                            \
>> > -       data = eina_list_data_get(l))
>> > +       EINA_PREFETCH(l_prev),                                 \
>> > +       data = eina_list_data_get(l),                          \
>> > +       EINA_PREFETCH(data))
>> >
>> >  /**
>> >   * @def EINA_LIST_FREE
>> > @@ -1624,9 +1638,11 @@ EAPI int                   eina_list_data_idx(const
>> > Eina_List *list, void *data)
>> >   * @see eina_list_free()
>> >   */
>> >  #define EINA_LIST_FREE(list, data)               \
>> > -  for (data = eina_list_data_get(list);          \
>> > +  for (data = eina_list_data_get(list),          \
>> > +       list ? EINA_PREFETCH((list)->next) : EINA_PREFETCH(list); \
>> >         list;                                     \
>> >         list = eina_list_remove_list(list, list), \
>> > +       list ? EINA_PREFETCH((list)->next) : EINA_PREFETCH(list), \
>> >         data = eina_list_data_get(list))
>> >
>> >  #include "eina_inline_list.x"
>> >
>> > --
>> >
>> >
>>
>
>
> --
> ------------- Codito, ergo sum - "I code, therefore I am" --------------
> The Rasterman (Carsten Haitzler)    ras...@rasterman.com
>

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to