[all-commits] [llvm/llvm-project] 23ccb0: CodeGen: add a missing check for bit-slice overlap...

Saleem Abdulrasool via All-commits all-commits at lists.llvm.org
Thu Dec 14 13:59:28 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 23ccb02c59d2ad6c1e8c79b7bf0e98c2afc36fb9
      https://github.com/llvm/llvm-project/commit/23ccb02c59d2ad6c1e8c79b7bf0e98c2afc36fb9
  Author: Saleem Abdulrasool <compnerd at compnerd.org>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
    A llvm/test/DebugInfo/codeview-bit-slice-fragments.ll

  Log Message:
  -----------
  CodeGen: add a missing check for bit-slice overlap in CV (#75504)

Type dereferenced fragments are specified by offset and length in bits.
The representation in CodeView is defined in terms of byte offsets. If
the bit slice overlaps at a byte that is included, we would create
invalid definition ranges.

Consider the following scenario:

~~~
01234567   01234567
---------+---------
 ====  ======
~~~

Here bits 1-4 are marked as defined as well as bits 7-9. The byte range
for the second portion overlaps and so we would say that bytes 1 and 2
are valid though there is potentially a hole. There is no way to
represent this in the defined range for the local variable in CodeView.
We simply can drop the fragment definition in such a scenario with the
variables are "optimized out".

Thanks to @rnk and @hjyamauchi for the discussion around this.




More information about the All-commits mailing list