[cfe-dev] Some error in clangd

Sam McCall via cfe-dev cfe-dev at lists.llvm.org
Mon Apr 1 09:37:54 PDT 2019


Apologies, missed the attachment in the original email. Will look in the
morning!

On Mon, Apr 1, 2019 at 2:17 PM Sam McCall <sammccall at google.com> wrote:

> Hi! Sorry the heuristics aren't working here.
> The most likely thing is the bare name "types" is matching some *.cpp file
> from a base library, and we're weighing that too heavily and the directory
> not heavily enough. This is probably due to heuristics tuned for the LLVM
> project itself, which has few dependencies and parallel source/include
> trees.
> Can you attach compile_commands.json please?
>
> On Mon, Apr 1, 2019 at 11:24 AM Ilya Biryukov <ibiryukov at google.com>
> wrote:
>
>> I don't think there's any simple solution to this. You could try patching
>> your 'compile_commands.json' to add the header files in there, but CMake
>> won't do this automatically for you.
>> I believe the following project on GitHub tries to do something similar,
>> but I haven't tried it myself: https://github.com/Sarcasm/compdb
>>
>>
>> +Sam McCall <sammccall at google.com>, now that you're back from leave, any
>> ideas for improving the heuristics to find proper matching .cpp files in
>> more cases?
>>
>> On Mon, Apr 1, 2019 at 11:11 AM yus <suyu.nu at gmail.com> wrote:
>>
>>> Excuse me, is there any solution for my problem?
>>> Thanks
>>>
>>> yus <suyu.nu at gmail.com> 于2019年3月23日周六 上午9:40写道:
>>>
>>>> HI,
>>>>
>>>> Got it.
>>>> So my problem has no relationship with front-end vim-YoucompleteMe
>>>> I just need to wait for your solution or workaround.
>>>>
>>>> Thanks for your help.
>>>>
>>>> Brs,
>>>> Su Yu
>>>>
>>>> Ilya Biryukov <ibiryukov at google.com> 于2019年3月22日周五 下午8:43写道:
>>>>
>>>>> On Fri, Mar 22, 2019 at 12:41 PM yus <suyu.nu at gmail.com> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> By the way,
>>>>>> If a header has no source file (*.cpp), how it been handled.
>>>>>>
>>>>> In that case we would fallback to something like `clang -xc++
>>>>> test.hpp`.
>>>>> But that almost never happens, our heuristics will always try to pick
>>>>> some cpp file first.
>>>>> E.g. in the extreme case when compile_commands.json has just a single
>>>>> file, we will take the compile command from that file for *all* headers
>>>>> we encounter.
>>>>>
>>>>>
>>>>>>
>>>>>> Brs,
>>>>>> Su Yu
>>>>>>
>>>>>> yus <suyu.nu at gmail.com> 于2019年3月22日周五 下午7:37写道:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> Many thanks for your prompt answer.
>>>>>>> It's an open source project.
>>>>>>> But it's a little difficult to build. It has many dependency
>>>>>>> Hope it can help.
>>>>>>> https://github.com/EOSIO/eos
>>>>>>>
>>>>>>> Thanks.
>>>>>>>
>>>>>>> Brs,
>>>>>>> Su Yu
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Ilya Biryukov <ibiryukov at google.com> 于2019年3月22日周五 下午5:18写道:
>>>>>>>
>>>>>>>> Hi Su,
>>>>>>>>
>>>>>>>> Since compile_commands.json only contains compile commands for .cpp
>>>>>>>> files, we use a heuristics-based approach to infer compile commands for
>>>>>>>> headers.
>>>>>>>> More precisely, based on the path to the header file we try to
>>>>>>>> guess the best .cpp file for a header (e.g. an implementation file) and
>>>>>>>> pick the compile command from it.
>>>>>>>>
>>>>>>>> In your case, we fail to guess a good compile command. I don't know
>>>>>>>> of a good workaround, unfortunately.
>>>>>>>> +Sam McCall <sammccall at google.com> is the author of this approach,
>>>>>>>> he might have ideas on how to fix this.
>>>>>>>>
>>>>>>>> Is the project you're working on open-source? If so, could you
>>>>>>>> provide a link to the source code? If not, compilation database should also
>>>>>>>> be enough to reproduce.
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Mar 21, 2019 at 10:41 PM yus via cfe-dev <
>>>>>>>> cfe-dev at lists.llvm.org> wrote:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>> I encounter an error in clangd
>>>>>>>>>
>>>>>>>>> I[12:49:12.197] Updating file
>>>>>>>>> /root/workspace/eos4/libraries/chain/include/eosio/chain/types.hpp with
>>>>>>>>> command*
>>>>>>>>> [/root/workspace/eos4/build/libraries/wasm-jit/Source/IR] */usr/bin/clang++-4.0
>>>>>>>>> -D ENABLE_SIMD_PROTOTYPE=0 -D ENABLE_THREADING_PROTOTYPE=0 -D
>>>>>>>>> IR_API=DLL_EXPORT -D PRETEND_32BIT_ADDRESS_SPACE=0 -D WAVM_METRICS_OUTPUT=0
>>>>>>>>> -I /root/workspace/eos4/libraries/wasm-jit/Include -I
>>>>>>>>> /root/workspace/eos4/libraries/wasm-jit/Include/IR -Wall
>>>>>>>>> -Wno-invalid-partial-specialization -O3 -D NDEBUG -c -std=gnu++14
>>>>>>>>> /root/workspace/eos4/libraries/chain/include/eosio/chain/types.hpp
>>>>>>>>> -resource-dir=/root/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/clang/lib/clang/7.0.0
>>>>>>>>> V[12:49:12.199] Preamble for file
>>>>>>>>> /root/workspace/eos4/libraries/chain/include/eosio/chain/types.hpp cannot
>>>>>>>>> be reused. Attempting to rebuild it.
>>>>>>>>> V[12:49:12.238] Built preamble of size 213512 for file
>>>>>>>>> /root/workspace/eos4/libraries/chain/include/eosio/chain/types.hpp
>>>>>>>>> I[12:49:12.242] Dropped diagnostic outside main file: : too many
>>>>>>>>> errors emitted, stopping now
>>>>>>>>>
>>>>>>>>> some other file in same folder update correctly
>>>>>>>>>
>>>>>>>>> I[12:49:03.898] Updating file
>>>>>>>>> /root/workspace/eos4/libraries/chain/include/eosio/chain/resource_limits.hpp
>>>>>>>>> with command *[/root/workspace/eos4/build/libraries/chain] */usr/bin/clang++-4.0
>>>>>>>>> -I /root/workspace/eos4/libraries/chain/include -I
>>>>>>>>> /root/workspace/eos4/build/libraries/chain/include -I
>>>>>>>>> /root/workspace/eos4/libraries/chain/../wasm-jit/Include -I
>>>>>>>>> /root/workspace/eos4/libraries/chain/../../externals/binaryen/src -I
>>>>>>>>> /root/workspace/eos4/libraries/utilities/include -I
>>>>>>>>> /root/workspace/eos4/libraries/utilities/../wasm-jit/Include -I
>>>>>>>>> /root/workspace/eos4/libraries/fc/include -I /root/opt/boost/include -I
>>>>>>>>> /usr/local/include -I /root/workspace/eos4/libraries/fc/vendor/websocketpp
>>>>>>>>> -I /root/workspace/eos4/libraries/chainbase/include -I
>>>>>>>>> /root/workspace/eos4/libraries/wasm-jit/Source/Runtime/../../../chain/include
>>>>>>>>> -I /root/workspace/eos4/libraries/softfloat/source/include -I
>>>>>>>>> /root/workspace/eos4/libraries/softfloat/source/8086-SSE -I
>>>>>>>>> /root/workspace/eos4/libraries/softfloat/build/Linux-x86_64-GCC -I
>>>>>>>>> /root/workspace/eos4/libraries/builtins -I
>>>>>>>>> /root/workspace/eos4/libraries/builtins../softfloat/source/include -Wall
>>>>>>>>> -Wno-invalid-partial-specialization -O3 -D NDEBUG -c -std=gnu++14
>>>>>>>>> /root/workspace/eos4/libraries/chain/include/eosio/chain/resource_limits.hpp
>>>>>>>>> -resource-dir=/root/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/clang/lib/clang/7.0.0
>>>>>>>>> V[12:49:03.901] Preamble for file
>>>>>>>>> /root/workspace/eos4/libraries/chain/include/eosio/chain/resource_limits.hpp
>>>>>>>>> cannot be reused. Attempting to rebuild it.
>>>>>>>>> V[12:49:10.676] <<<
>>>>>>>>> {"id":"3","jsonrpc":"2.0","method":"textDocument/definition","params":{"position":{"character":51,"line":53},"textDocument":{"uri":"file:///root/workspace/eos4/libraries/chain/include/eosio/chain/resource_limits.hpp"}}}
>>>>>>>>>
>>>>>>>>> I don't know why, and what's the difference. why the flags are
>>>>>>>>> different.
>>>>>>>>> How to fix the problem
>>>>>>>>>
>>>>>>>>> root at 39470746ee31:~/workspace/eos4# /usr/bin/clang++-4.0 -D
>>>>>>>>> ENABLE_SIMD_PROTOTYPE=0 -D ENABLE_THREADING_PROTOTYPE=0 -D
>>>>>>>>> IR_API=DLL_EXPORT -D PRETEND_32BIT_ADDRESS_SPACE=0 -D WAVM_METRICS_OUTPUT=0
>>>>>>>>> -I /root/workspace/eos4/libraries/wasm-jit/Include -I
>>>>>>>>> /root/workspace/eos4/libraries/wasm-jit/Include/IR -Wall
>>>>>>>>> -Wno-invalid-partial-specialization -O3 -D NDEBUG -c -std=gnu++14
>>>>>>>>> /root/workspace/eos4/libraries/chain/include/eosio/chain/types.hpp
>>>>>>>>> -resource-dir=/root/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/clang/lib/clang/7.0.0
>>>>>>>>> /root/workspace/eos4/libraries/chain/include/eosio/chain/types.hpp:6:10:
>>>>>>>>> fatal error: 'eosio/chain/name.hpp' file not found
>>>>>>>>> #include <eosio/chain/name.hpp>
>>>>>>>>>          ^~~~~~~~~~~~~~~~~~~~~~
>>>>>>>>> 1 error generated.
>>>>>>>>>
>>>>>>>>> attach the error and compilation database
>>>>>>>>>
>>>>>>>>> Thanks.
>>>>>>>>>
>>>>>>>>> Brs
>>>>>>>>> Su Yu
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> cfe-dev mailing list
>>>>>>>>> cfe-dev at lists.llvm.org
>>>>>>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Regards,
>>>>>>>> Ilya Biryukov
>>>>>>>>
>>>>>>>
>>>>>
>>>>> --
>>>>> Regards,
>>>>> Ilya Biryukov
>>>>>
>>>>
>>
>> --
>> Regards,
>> Ilya Biryukov
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20190401/5f2db8ac/attachment.html>


More information about the cfe-dev mailing list