[all-commits] [llvm/llvm-project] f8bdbe: [CIR] Upstream simple function bodies (#127674)

David Olsen via All-commits all-commits at lists.llvm.org
Wed Feb 19 19:58:33 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: f8bdbed5b3f12c5e1c38a29cd71df286a9e2725c
      https://github.com/llvm/llvm-project/commit/f8bdbed5b3f12c5e1c38a29cd71df286a9e2725c
  Author: David Olsen <dolsen at nvidia.com>
  Date:   2025-02-19 (Wed, 19 Feb 2025)

  Changed paths:
    M clang/include/clang/CIR/Dialect/IR/CIROps.td
    A clang/include/clang/CIR/TypeEvaluationKind.h
    A clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp
    A clang/lib/CIR/CodeGen/CIRGenFunction.cpp
    A clang/lib/CIR/CodeGen/CIRGenFunction.h
    M clang/lib/CIR/CodeGen/CIRGenModule.cpp
    M clang/lib/CIR/CodeGen/CIRGenModule.h
    A clang/lib/CIR/CodeGen/CIRGenStmt.cpp
    M clang/lib/CIR/CodeGen/CIRGenTypes.cpp
    M clang/lib/CIR/CodeGen/CIRGenTypes.h
    M clang/lib/CIR/CodeGen/CMakeLists.txt
    M clang/lib/CIR/Dialect/IR/CIRDialect.cpp
    A clang/test/CIR/func-simple.cpp
    M clang/test/CIR/global-var-simple.cpp
    R clang/test/CIR/hello.c

  Log Message:
  -----------
  [CIR] Upstream simple function bodies (#127674)

Enable ClangIR generation for very simple functions. The functions have
to return `void` or an integral type, contain only compound statements
or `return` statements, and `return` statement expressions can only be
integral literals of the correct type. The functions can have
parameters, but those are currently ignored because there is no way to
access them.

This change intentionally focuses on breadth (introducing scopes,
statements, and expressions) rather than depth, because it enables
people to work on upstreaming in parallel without interference.

The new ClangIR ops in this change are `ReturnOp`, `YieldOp`, `ScopeOp`,
and `TrapOp`. These operations are complete (except for the
`ParentOneOf` property) and shouldn't require further upstreaming
changes. Significant additions were made to `FuncOp`, adding a type and
a region, but that operation is still far from complete.

The classes `ScalarExprEmitter` and `CIRGenFunction`, along with the
`emit*` functions in `CIRGenFunction` that generate ClangIR for
statements, are new in this change. All of these are very incomplete and
will be filled out in later upstreaming patches.

Existing test `hello.c` is removed and replaced by the new test
`func-simple.cpp`. This tests all forms of functions that are currently
supported.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list