[all-commits] [llvm/llvm-project] dbf3ca: [clangd] check for synthesized symbols when tracki...

Matheus Izvekov via All-commits all-commits at lists.llvm.org
Mon Dec 11 18:10:05 PST 2023


  Branch: refs/heads/users/mizvekov/bug/clangd-msvc-assert-crash-fix
  Home:   https://github.com/llvm/llvm-project
  Commit: dbf3ca258b70aa591f14300ba18dcc6b8d35de40
      https://github.com/llvm/llvm-project/commit/dbf3ca258b70aa591f14300ba18dcc6b8d35de40
  Author: Matheus Izvekov <mizvekov at gmail.com>
  Date:   2023-12-11 (Mon, 11 Dec 2023)

  Changed paths:
    M clang-tools-extra/clangd/index/SymbolCollector.cpp
    M clang-tools-extra/clangd/test/GH75115.test

  Log Message:
  -----------
  [clangd] check for synthesized symbols when tracking include locations

This fixes https://github.com/llvm/llvm-project/issues/75115

In C mode with MSVC compatibility, when the `assert` macro is defined,
as a workaround, `static_assert` is implicitly defined as well,
if not already so, in order to work around a broken `assert.h`
implementation.
This workaround was implemented in https://github.com/llvm/llvm-project/commit/8da090381d567d0ec555840f6b2a651d2997e4b3

A synthesized symbol does not occur in source code, and therefore
should not have valid source location, but this was not checked when
inserting this into a map symbol -> include file map.

The invalid FileID value is used for empty key representation in
the include file map hash table, and it's not valid to insert it,
causing the crash.




More information about the All-commits mailing list