[all-commits] [llvm/llvm-project] cf1006: [clang][Interp] Fully serialize Floating values to...

Timm Baeder via All-commits all-commits at lists.llvm.org
Thu Aug 17 03:44:03 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: cf10061da75e41286c28690e45eee6ee70dad766
      https://github.com/llvm/llvm-project/commit/cf10061da75e41286c28690e45eee6ee70dad766
  Author: Timm Bäder <tbaeder at redhat.com>
  Date:   2023-08-17 (Thu, 17 Aug 2023)

  Changed paths:
    M clang/lib/AST/Interp/ByteCodeEmitter.cpp
    M clang/lib/AST/Interp/Disasm.cpp
    M clang/lib/AST/Interp/Floating.h
    M clang/lib/AST/Interp/Interp.h
    M clang/lib/AST/Interp/Source.h
    M clang/test/AST/Interp/floats.cpp

  Log Message:
  -----------
  [clang][Interp] Fully serialize Floating values to bytes

The Floating class wraps a APFloat, which might heap allocate memory to
represent large floating values. When writing those to bytecode, we
would free() the heap allocation after writing, when destroying the
actual APFloat we wrote.

Fix this by seralizing a Floating as Semantics + APInt.

This will be neccessary in more cases later, when we support
arbitrary-precision integers or _BitInt.

Differential Revision: https://reviews.llvm.org/D155165




More information about the All-commits mailing list