[llvm] [VPlan] Fold VPDef into VPRecipeBase (NFC). (PR #174282)

LLVM Continuous Integration via llvm-commits llvm-commits at lists.llvm.org
Sat Jan 24 05:22:39 PST 2026


llvm-ci wrote:

LLVM Buildbot has detected a new failure on builder `polly-x86_64-linux-noassert` running on `polly-x86_64-gce1` while building `llvm` at step 5 "build".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/28/builds/15008

<details>
<summary>Here is the relevant piece of the build log for the reference</summary>

```
Step 5 (build) failure: 'ninja' (failure)
[1/123] Building CXX object tools/llvm-config/CMakeFiles/llvm-config.dir/llvm-config.cpp.o
[2/123] Generating VCSRevision.h
[3/123] Generating VCSVersion.inc
[4/123] Linking CXX executable bin/llvm-config
[5/123] Building CXX object lib/Transforms/Vectorize/CMakeFiles/LLVMVectorize.dir/VPlan.cpp.o
FAILED: lib/Transforms/Vectorize/CMakeFiles/LLVMVectorize.dir/VPlan.cpp.o 
ccache /usr/bin/c++ -D_GLIBCXX_USE_CXX11_ABI=1 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.obj/lib/Transforms/Vectorize -I/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize -I/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.obj/include -I/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-dangling-reference -Wno-redundant-move -Wno-pessimizing-move -Wno-array-bounds -Wno-stringop-overread -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG -std=c++17 -fno-exceptions -funwind-tables -fno-rtti -MD -MT lib/Transforms/Vectorize/CMakeFiles/LLVMVectorize.dir/VPlan.cpp.o -MF lib/Transforms/Vectorize/CMakeFiles/LLVMVectorize.dir/VPlan.cpp.o.d -o lib/Transforms/Vectorize/CMakeFiles/LLVMVectorize.dir/VPlan.cpp.o -c /srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlan.cpp
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlan.cpp:121:6: error: no declaration matches ‘bool llvm::VPRecipeValue::isDefinedBy(const llvm::VPDef*) const’
  121 | bool VPRecipeValue::isDefinedBy(const VPDef *D) const { return Def == D; }
      |      ^~~~~~~~~~~~~
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlan.cpp:121:6: note: no functions named ‘bool llvm::VPRecipeValue::isDefinedBy(const llvm::VPDef*) const’
In file included from /srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlan.h:27,
                 from /srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlan.cpp:19:
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanValue.h:232:7: note: ‘class llvm::VPRecipeValue’ defined here
  232 | class VPRecipeValue : public VPValue {
      |       ^~~~~~~~~~~~~
[6/123] Building CXX object lib/Transforms/Vectorize/CMakeFiles/LLVMVectorize.dir/VPlanSLP.cpp.o
[7/123] Building CXX object lib/Transforms/Vectorize/CMakeFiles/LLVMVectorize.dir/VPlanPredicator.cpp.o
[8/123] Building CXX object lib/Transforms/Vectorize/CMakeFiles/LLVMVectorize.dir/VPlanUnroll.cpp.o
In file included from /srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanUnroll.cpp:19:
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h: In instantiation of ‘bool llvm::VPlanPatternMatch::Recipe_match<Ops_t, Opcode, Commutative, RecipeTys>::all_of_tuple_elements(std::index_sequence<Idx ...>, Fn) const [with Fn = llvm::VPlanPatternMatch::Recipe_match<std::tuple<>, 77, false, llvm::VPInstruction>::match(const llvm::VPRecipeBase*) const::<lambda(auto:33, unsigned int)>; long unsigned int ...Is = {}; Ops_t = std::tuple<>; unsigned int Opcode = 77; bool Commutative = false; RecipeTys = {llvm::VPInstruction}; std::index_sequence<Idx ...> = std::integer_sequence<long unsigned int>]’:
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h:294:30:   required from ‘bool llvm::VPlanPatternMatch::Recipe_match<Ops_t, Opcode, Commutative, RecipeTys>::match(const llvm::VPRecipeBase*) const [with Ops_t = std::tuple<>; unsigned int Opcode = 77; bool Commutative = false; RecipeTys = {llvm::VPInstruction}]’
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h:23:17:   required from ‘bool llvm::VPlanPatternMatch::match(Val*, const Pattern&) [with Val = llvm::VPRecipeBase; Pattern = Recipe_match<std::tuple<>, 77, false, llvm::VPInstruction>]’
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanUnroll.cpp:365:14:   required from here
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h:322:61: warning: parameter ‘P’ set but not used [-Wunused-but-set-parameter]
  322 |   bool all_of_tuple_elements(std::index_sequence<Is...>, Fn P) const {
      |                                                          ~~~^
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h: In instantiation of ‘bool llvm::VPlanPatternMatch::Recipe_match<Ops_t, Opcode, Commutative, RecipeTys>::all_of_tuple_elements(std::index_sequence<Idx ...>, Fn) const [with Fn = llvm::VPlanPatternMatch::Recipe_match<std::tuple<>, 77, false, llvm::VPInstruction>::match(const llvm::VPRecipeBase*) const::<lambda(auto:34, unsigned int)>; long unsigned int ...Is = {}; Ops_t = std::tuple<>; unsigned int Opcode = 77; bool Commutative = false; RecipeTys = {llvm::VPInstruction}; std::index_sequence<Idx ...> = std::integer_sequence<long unsigned int>]’:
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h:300:33:   required from ‘bool llvm::VPlanPatternMatch::Recipe_match<Ops_t, Opcode, Commutative, RecipeTys>::match(const llvm::VPRecipeBase*) const [with Ops_t = std::tuple<>; unsigned int Opcode = 77; bool Commutative = false; RecipeTys = {llvm::VPInstruction}]’
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h:23:17:   required from ‘bool llvm::VPlanPatternMatch::match(Val*, const Pattern&) [with Val = llvm::VPRecipeBase; Pattern = Recipe_match<std::tuple<>, 77, false, llvm::VPInstruction>]’
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanUnroll.cpp:365:14:   required from here
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h:322:61: warning: parameter ‘P’ set but not used [-Wunused-but-set-parameter]
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h: In instantiation of ‘bool llvm::VPlanPatternMatch::Recipe_match<Ops_t, Opcode, Commutative, RecipeTys>::all_of_tuple_elements(std::index_sequence<Idx ...>, Fn) const [with Fn = llvm::VPlanPatternMatch::Recipe_match<std::tuple<>, 79, false, llvm::VPInstruction>::match(const llvm::VPRecipeBase*) const::<lambda(auto:33, unsigned int)>; long unsigned int ...Is = {}; Ops_t = std::tuple<>; unsigned int Opcode = 79; bool Commutative = false; RecipeTys = {llvm::VPInstruction}; std::index_sequence<Idx ...> = std::integer_sequence<long unsigned int>]’:
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h:294:30:   required from ‘bool llvm::VPlanPatternMatch::Recipe_match<Ops_t, Opcode, Commutative, RecipeTys>::match(const llvm::VPRecipeBase*) const [with Ops_t = std::tuple<>; unsigned int Opcode = 79; bool Commutative = false; RecipeTys = {llvm::VPInstruction}]’
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h:219:19:   required from ‘bool llvm::VPlanPatternMatch::match_combine_or<LTy, RTy>::match(ITy*) const [with ITy = llvm::VPRecipeBase; LTy = llvm::VPlanPatternMatch::Recipe_match<std::tuple<>, 79, false, llvm::VPInstruction>; RTy = llvm::VPlanPatternMatch::Recipe_match<std::tuple<>, 78, false, llvm::VPInstruction>]’
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h:23:17:   required from ‘bool llvm::VPlanPatternMatch::match(Val*, const Pattern&) [with Val = llvm::VPRecipeBase; Pattern = match_combine_or<Recipe_match<std::tuple<>, 79, false, llvm::VPInstruction>, Recipe_match<std::tuple<>, 78, false, llvm::VPInstruction> >]’
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanUnroll.cpp:291:12:   required from here
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h:322:61: warning: parameter ‘P’ set but not used [-Wunused-but-set-parameter]
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h: In instantiation of ‘bool llvm::VPlanPatternMatch::Recipe_match<Ops_t, Opcode, Commutative, RecipeTys>::all_of_tuple_elements(std::index_sequence<Idx ...>, Fn) const [with Fn = llvm::VPlanPatternMatch::Recipe_match<std::tuple<>, 79, false, llvm::VPInstruction>::match(const llvm::VPRecipeBase*) const::<lambda(auto:34, unsigned int)>; long unsigned int ...Is = {}; Ops_t = std::tuple<>; unsigned int Opcode = 79; bool Commutative = false; RecipeTys = {llvm::VPInstruction}; std::index_sequence<Idx ...> = std::integer_sequence<long unsigned int>]’:
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h:300:33:   required from ‘bool llvm::VPlanPatternMatch::Recipe_match<Ops_t, Opcode, Commutative, RecipeTys>::match(const llvm::VPRecipeBase*) const [with Ops_t = std::tuple<>; unsigned int Opcode = 79; bool Commutative = false; RecipeTys = {llvm::VPInstruction}]’
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h:219:19:   required from ‘bool llvm::VPlanPatternMatch::match_combine_or<LTy, RTy>::match(ITy*) const [with ITy = llvm::VPRecipeBase; LTy = llvm::VPlanPatternMatch::Recipe_match<std::tuple<>, 79, false, llvm::VPInstruction>; RTy = llvm::VPlanPatternMatch::Recipe_match<std::tuple<>, 78, false, llvm::VPInstruction>]’
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h:23:17:   required from ‘bool llvm::VPlanPatternMatch::match(Val*, const Pattern&) [with Val = llvm::VPRecipeBase; Pattern = match_combine_or<Recipe_match<std::tuple<>, 79, false, llvm::VPInstruction>, Recipe_match<std::tuple<>, 78, false, llvm::VPInstruction> >]’
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanUnroll.cpp:291:12:   required from here
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h:322:61: warning: parameter ‘P’ set but not used [-Wunused-but-set-parameter]
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h: In instantiation of ‘bool llvm::VPlanPatternMatch::Recipe_match<Ops_t, Opcode, Commutative, RecipeTys>::all_of_tuple_elements(std::index_sequence<Idx ...>, Fn) const [with Fn = llvm::VPlanPatternMatch::Recipe_match<std::tuple<>, 78, false, llvm::VPInstruction>::match(const llvm::VPRecipeBase*) const::<lambda(auto:33, unsigned int)>; long unsigned int ...Is = {}; Ops_t = std::tuple<>; unsigned int Opcode = 78; bool Commutative = false; RecipeTys = {llvm::VPInstruction}; std::index_sequence<Idx ...> = std::integer_sequence<long unsigned int>]’:
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h:294:30:   required from ‘bool llvm::VPlanPatternMatch::Recipe_match<Ops_t, Opcode, Commutative, RecipeTys>::match(const llvm::VPRecipeBase*) const [with Ops_t = std::tuple<>; unsigned int Opcode = 78; bool Commutative = false; RecipeTys = {llvm::VPInstruction}]’
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h:219:33:   required from ‘bool llvm::VPlanPatternMatch::match_combine_or<LTy, RTy>::match(ITy*) const [with ITy = llvm::VPRecipeBase; LTy = llvm::VPlanPatternMatch::Recipe_match<std::tuple<>, 79, false, llvm::VPInstruction>; RTy = llvm::VPlanPatternMatch::Recipe_match<std::tuple<>, 78, false, llvm::VPInstruction>]’
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h:23:17:   required from ‘bool llvm::VPlanPatternMatch::match(Val*, const Pattern&) [with Val = llvm::VPRecipeBase; Pattern = match_combine_or<Recipe_match<std::tuple<>, 79, false, llvm::VPInstruction>, Recipe_match<std::tuple<>, 78, false, llvm::VPInstruction> >]’
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanUnroll.cpp:291:12:   required from here
/srv/bbworker/polly-x86_64-gce1/polly-x86_64-linux-noassert/llvm.src/llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h:322:61: warning: parameter ‘P’ set but not used [-Wunused-but-set-parameter]

```

</details>

https://github.com/llvm/llvm-project/pull/174282


More information about the llvm-commits mailing list