Enzyme icon indicating copy to clipboard operation
Enzyme copied to clipboard

Incorrect calling convention

Open wsmoses opened this issue 2 years ago • 1 comments

  call void @_Z17__enzyme_autodiffPvRKSt6vectorIN7libint25ShellESaIS2_EERS4_iNS1_8OperatorEiRKS0_I4AtomSaIS9_EE(%"class.Eigen::Matrix"* nonnull sret(%"class.Eigen::Matrix") align 8 %3, i8* bitcast (void (%"class.Eigen::Matrix"*, %"class.std::vector"*, i32, %"class.std::vector.11"*)* @_Z18compute_1body_intsRKSt6vectorIN7libint25ShellESaIS1_EENS0_8OperatorERKS_I4AtomSaIS7_EE to i8*), %"class.std::vector"* nonnull align 8 dereferenceable(24) %1, %"class.std::vector"* nonnull align 8 dereferenceable(24) %0, i32 %91, i32 0, i32 %91, %"class.std::vector.11"* nonnull align 8 dereferenceable(24) %4)
; Function Attrs: uwtable willreturn mustprogress
define internal void @diffe_Z18compute_1body_intsRKSt6vectorIN7libint25ShellESaIS1_EENS0_8OperatorERKS_I4AtomSaIS7_EE(%"class.Eigen::Matrix"* noalias nocapture align 8 %0, %"class.Eigen::Matrix"* nocapture %1, %"class.std::vector"* nocapture nonnull readonly align 8 dereferenceable(24) %2, %"class.std::vector"* nocapture %3, i32 %4, %"class.std::vector.11"* nocapture nonnull readnone align 8 dereferenceable(24) %5) #38 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
  ...
}

 +   %93 = alloca %"class.Eigen::Matrix", align 8
 + i8* bitcast (void (%"class.Eigen::Matrix"*, %"class.std::vector"*, i32, %"class.std::vector.11"*)* @_Z18compute_1body_intsRKSt6vectorIN7libint25ShellESaIS1_EENS0_8OperatorERKS_I4AtomSaIS7_EE to i8*)
 + %"class.std::vector"* %1
 + %"class.std::vector"* %0
 + i32 0
 +   %4 = alloca %"class.std::vector.11", align 8
 broken at: i=1 - i8* bitcast (void (%"class.Eigen::Matrix"*, %"class.std::vector"*, i32, %"class.std::vector.11"*)* @_Z18compute_1body_intsRKSt6vectorIN7libint25ShellESaIS1_EENS0_8OperatorERKS_I4AtomSaIS7_EE to i8*) - %"class.Eigen::Matrix"*


wsmoses avatar Jul 29 '22 22:07 wsmoses

This appears to be an error in requesting a pointer/duplicated sret return out of the ABI for reverse mode.

Now this isn't presently supported, but we should issue a nicer error of some sort @tgymnich

wsmoses avatar Aug 02 '22 04:08 wsmoses