[all-commits] [llvm/llvm-project] 19f2b6: Make globals with mutable members non-constant, ev...

David Blaikie via All-commits all-commits at lists.llvm.org
Mon Aug 14 15:26:18 PDT 2023

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 19f2b68095fe727e40079b7c6380b36b6462e691
  Author: David Blaikie <dblaikie at gmail.com>
  Date:   2023-08-14 (Mon, 14 Aug 2023)

  Changed paths:
    M clang/include/clang/AST/Type.h
    M clang/include/clang/Basic/DiagnosticGroups.td
    M clang/include/clang/Basic/DiagnosticSemaKinds.td
    M clang/lib/AST/Type.cpp
    M clang/lib/CodeGen/CGDecl.cpp
    M clang/lib/CodeGen/CGDeclCXX.cpp
    M clang/lib/CodeGen/CGExpr.cpp
    M clang/lib/CodeGen/CGExprConstant.cpp
    M clang/lib/CodeGen/CodeGenModule.cpp
    M clang/lib/CodeGen/CodeGenModule.h
    M clang/lib/CodeGen/Targets/AMDGPU.cpp
    M clang/lib/Sema/SemaDecl.cpp
    M clang/test/CodeGenCXX/sections.cpp
    M clang/test/SemaCXX/attr-section.cpp

  Log Message:
  Make globals with mutable members non-constant, even in custom sections

Turned out we were making overly simple assumptions about which sections (& section flags) would be used when emitting a global into a custom section. This lead to sections with read-only flags being used for globals of struct types with mutable members.

Fixed by porting the codegen function with the more nuanced handling/checking for mutable members out of codegen for use in the sema code that does this initial checking/mapping to section flags.

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

More information about the All-commits mailing list