On 01/24/2018 08:20 AM, Andres Freund wrote:
> Hi,
> 
> I've spent the last weeks working on my LLVM compilation patchset. In
> the course of that I *heavily* revised it. While still a good bit away
> from committable, it's IMO definitely not a prototype anymore.
> 
> There's too many small changes, so I'm only going to list the major
> things. A good bit of that is new. The actual LLVM IR emissions itself
> hasn't changed that drastically.  Since I've not described them in
> detail before I'll describe from scratch in a few cases, even if things
> haven't fully changed.
> 

Hi, I wanted to look at this, but my attempts to build the jit branch
fail with some compile-time warnings (uninitialized variables) and
errors (unknown types, incorrect number of arguments). See the file
attached.

I wonder if I'm doing something wrong, or if there's something wrong
with my environment. I do have this:

$ clang -v
clang version 5.0.0 (trunk 299717)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/local/bin
Selected GCC installation: /usr/lib/gcc/x86_64-pc-linux-gnu/6.4.0
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64

regards

-- 
Tomas Vondra                  http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Writing fmgroids.h
Writing fmgrprotos.h
Writing fmgrtab.c
Writing postgres.bki
Writing schemapg.h
Writing postgres.description
Writing postgres.shdescription
../../../src/include/lib/simplehash.h: In function ‘tuplehash_insert’:
execGrouping.c:428:28: warning: ‘slot’ may be used uninitialized in this 
function [-Wmaybe-uninitialized]
  econtext->ecxt_innertuple = slot;
  ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
execGrouping.c:402:18: note: ‘slot’ was declared here
  TupleTableSlot *slot;
                  ^~~~
../../../src/include/lib/simplehash.h: In function ‘tuplehash_lookup’:
execGrouping.c:428:28: warning: ‘slot’ may be used uninitialized in this 
function [-Wmaybe-uninitialized]
  econtext->ecxt_innertuple = slot;
  ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
execGrouping.c:402:18: note: ‘slot’ was declared here
  TupleTableSlot *slot;
                  ^~~~
../../../src/include/lib/simplehash.h: In function ‘tuplehash_delete’:
execGrouping.c:428:28: warning: ‘slot’ may be used uninitialized in this 
function [-Wmaybe-uninitialized]
  econtext->ecxt_innertuple = slot;
  ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
execGrouping.c:402:18: note: ‘slot’ was declared here
  TupleTableSlot *slot;
                  ^~~~
llvmjit.c: In function ‘llvm_get_function’:
llvmjit.c:239:45: warning: passing argument 2 of ‘LLVMOrcGetSymbolAddress’ from 
incompatible pointer type [-Wincompatible-pointer-types]
  if (LLVMOrcGetSymbolAddress(llvm_opt0_orc, &addr, mangled))
                                             ^
In file included from llvmjit.c:45:0:
/usr/local/include/llvm-c/OrcBindings.h:129:22: note: expected ‘const char *’ 
but argument is of type ‘LLVMOrcTargetAddress * {aka long unsigned int *}’
 LLVMOrcTargetAddress LLVMOrcGetSymbolAddress(LLVMOrcJITStackRef JITStack,
                      ^~~~~~~~~~~~~~~~~~~~~~~
llvmjit.c:239:6: error: too many arguments to function ‘LLVMOrcGetSymbolAddress’
  if (LLVMOrcGetSymbolAddress(llvm_opt0_orc, &addr, mangled))
      ^~~~~~~~~~~~~~~~~~~~~~~
In file included from llvmjit.c:45:0:
/usr/local/include/llvm-c/OrcBindings.h:129:22: note: declared here
 LLVMOrcTargetAddress LLVMOrcGetSymbolAddress(LLVMOrcJITStackRef JITStack,
                      ^~~~~~~~~~~~~~~~~~~~~~~
llvmjit.c:243:45: warning: passing argument 2 of ‘LLVMOrcGetSymbolAddress’ from 
incompatible pointer type [-Wincompatible-pointer-types]
  if (LLVMOrcGetSymbolAddress(llvm_opt3_orc, &addr, mangled))
                                             ^
In file included from llvmjit.c:45:0:
/usr/local/include/llvm-c/OrcBindings.h:129:22: note: expected ‘const char *’ 
but argument is of type ‘LLVMOrcTargetAddress * {aka long unsigned int *}’
 LLVMOrcTargetAddress LLVMOrcGetSymbolAddress(LLVMOrcJITStackRef JITStack,
                      ^~~~~~~~~~~~~~~~~~~~~~~
llvmjit.c:243:6: error: too many arguments to function ‘LLVMOrcGetSymbolAddress’
  if (LLVMOrcGetSymbolAddress(llvm_opt3_orc, &addr, mangled))
      ^~~~~~~~~~~~~~~~~~~~~~~
In file included from llvmjit.c:45:0:
/usr/local/include/llvm-c/OrcBindings.h:129:22: note: declared here
 LLVMOrcTargetAddress LLVMOrcGetSymbolAddress(LLVMOrcJITStackRef JITStack,
                      ^~~~~~~~~~~~~~~~~~~~~~~
llvmjit.c: In function ‘llvm_compile_module’:
llvmjit.c:383:3: error: unknown type name ‘LLVMSharedModuleRef’
   LLVMSharedModuleRef smod;
   ^~~~~~~~~~~~~~~~~~~
llvmjit.c:388:10: warning: implicit declaration of function 
‘LLVMOrcMakeSharedModule’ [-Wimplicit-function-declaration]
   smod = LLVMOrcMakeSharedModule(context->module);
          ^~~~~~~~~~~~~~~~~~~~~~~
llvmjit.c:389:48: warning: passing argument 2 of ‘LLVMOrcAddEagerlyCompiledIR’ 
from incompatible pointer type [-Wincompatible-pointer-types]
   if (LLVMOrcAddEagerlyCompiledIR(compile_orc, &orc_handle, smod,
                                                ^
In file included from llvmjit.c:45:0:
/usr/local/include/llvm-c/OrcBindings.h:98:1: note: expected ‘LLVMModuleRef 
{aka struct LLVMOpaqueModule *}’ but argument is of type ‘LLVMOrcModuleHandle * 
{aka unsigned int *}’
 LLVMOrcAddEagerlyCompiledIR(LLVMOrcJITStackRef JITStack, LLVMModuleRef Mod,
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
llvmjit.c:389:61: warning: passing argument 3 of ‘LLVMOrcAddEagerlyCompiledIR’ 
makes pointer from integer without a cast [-Wint-conversion]
   if (LLVMOrcAddEagerlyCompiledIR(compile_orc, &orc_handle, smod,
                                                             ^~~~
In file included from llvmjit.c:45:0:
/usr/local/include/llvm-c/OrcBindings.h:98:1: note: expected 
‘LLVMOrcSymbolResolverFn {aka long unsigned int (*)(const char *, void *)}’ but 
argument is of type ‘int’
 LLVMOrcAddEagerlyCompiledIR(LLVMOrcJITStackRef JITStack, LLVMModuleRef Mod,
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
llvmjit.c:389:7: error: too many arguments to function 
‘LLVMOrcAddEagerlyCompiledIR’
   if (LLVMOrcAddEagerlyCompiledIR(compile_orc, &orc_handle, smod,
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from llvmjit.c:45:0:
/usr/local/include/llvm-c/OrcBindings.h:98:1: note: declared here
 LLVMOrcAddEagerlyCompiledIR(LLVMOrcJITStackRef JITStack, LLVMModuleRef Mod,
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
llvmjit.c:394:3: warning: implicit declaration of function 
‘LLVMOrcDisposeSharedModuleRef’ [-Wimplicit-function-declaration]
   LLVMOrcDisposeSharedModuleRef(smod);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[3]: *** [<builtin>: llvmjit.o] Error 1
make[2]: *** [common.mk:45: lib-recursive] Error 2
make[2]: *** Waiting for unfinished jobs....
execGrouping.c:406:6: warning: variable 'slot' is used uninitialized whenever 
'if' condition is false [-Wsometimes-uninitialized]
        if (tuple == NULL)
            ^~~~~~~~~~~~~
execGrouping.c:428:30: note: uninitialized use occurs here
        econtext->ecxt_innertuple = slot;
                                    ^~~~
execGrouping.c:406:2: note: remove the 'if' if its condition is always true
        if (tuple == NULL)
        ^~~~~~~~~~~~~~~~~~
execGrouping.c:402:22: note: initialize the variable 'slot' to silence this 
warning
        TupleTableSlot *slot;
                            ^
                             = NULL
1 warning generated.
make[1]: *** [Makefile:38: install-backend-recurse] Error 2
make: *** [GNUmakefile:11: install-src-recurse] Error 2

Reply via email to