mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 08:41:06 +01:00
GetCallee returns a structure with SpecificIds in it, and then those specifics are used to later get constant values. This is fine when those specifics are canonical, but it's problematic when they are not, because non-canonical specifics (from a generic eval block) do not ever have any resolved decl/defn blocks. Formatting in particular works with non-canonical instructions when it formats a generic eval block. We want to be able to format the block, but those specifics are not useful for constant value mapping/lookup. GetCallee grabs (non-canonical) instruction ids out of other instructions. When getting a SpecificId out of an instruction, it should map that instruction to the canonical value first. This means the specific will be resolved and can be used for constant value mapping later. Fixes #6677
20 lines
868 B
Plaintext
20 lines
868 B
Plaintext
// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
|
|
// Exceptions. See /LICENSE for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
|
//
|
|
// ARGS: compile --phase=check --dump-sem-ir %s
|
|
//
|
|
// NOAUTOUPDATE
|
|
// SET-CHECK-SUBSET
|
|
//
|
|
// TIP: To test this file alone, run:
|
|
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/basics/dump_prelude.carbon
|
|
// TIP: To dump output, run:
|
|
// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/basics/dump_prelude.carbon
|
|
|
|
// CHECK:STDOUT: interface @Copy {
|
|
// CHECK:STDOUT: interface @Destroy {
|
|
// CHECK:STDOUT: fn @MakeInt(%size.param: Core.IntLiteral) -> out %return.param: type = "int.make_type_signed";
|