[Clang][Attr] fix a btf_type_attr CGDebugInfo codegen bug
authorYonghong Song <yhs@fb.com>
Sun, 7 Nov 2021 00:46:40 +0000 (17:46 -0700)
committerYonghong Song <yhs@fb.com>
Sun, 7 Nov 2021 01:19:00 +0000 (18:19 -0700)
commitbbab17c6c987d7a6612855c02a4e8988dac0dc17
tree1fd7d2065e1260b9df180cf49ec21a54516e3137
parentd9e2c8f54ddefa89e5599f0a011f946cab1a8534
[Clang][Attr] fix a btf_type_attr CGDebugInfo codegen bug

Nathan Chancellor reported a crash due to commit
3466e00716e1 (Reland "[Attr] support btf_type_tag attribute").

The following test can reproduce the crash:
  $ cat efi.i
  typedef unsigned long efi_query_variable_info_t(int);
  typedef struct {
    struct {
      efi_query_variable_info_t __attribute__((regparm(0))) * query_variable_info;
    };
  } efi_runtime_services_t;
  efi_runtime_services_t efi_0;
  $ clang -m32 -O2 -g -c -o /dev/null efi.i

The reason is that FunctionTypeLoc.getParam(Idx) may return a
nullptr which should be checked before dereferencing the
result pointer. This patch fixed this issue.
clang/lib/CodeGen/CGDebugInfo.cpp