Repository: rust-lang/rust
Pull request: Revert "Rollup merge of #154200 - resrever:enable-dwarf-call-sites, r=dingxiangfei2009"

This reverts commit 2f1603077b249819ec6ab6ba2a73b2f5b8079382, reversing
changes made to 6e3c17424d5c97770f1de534fb1bec496de4d9cf.

Debugging perf. hit from https://github.com/rust-lang/rust/pull/154384.

The binary size hits from https://github.com/rust-lang/rust/pull/154468#issuecomment-4144557076 were due to this PR, not all of the copmile-time hits though.

Changed files:
filename: compiler/rustc_codegen_llvm/src/debuginfo/mod.rs
patch: @@ -471,7 +471,7 @@ impl<'ll, 'tcx> DebugInfoCodegenMethods<'tcx> for CodegenCx<'ll, 'tcx> {
         // FIXME(eddyb) does this need to be separate from `loc.line` for some reason?
         let scope_line = loc.line;
 
-        let mut flags = DIFlags::FlagPrototyped | DIFlags::FlagAllCallsDescribed;
+        let mut flags = DIFlags::FlagPrototyped;
 
         if fn_abi.ret.layout.is_uninhabited() {
             flags |= DIFlags::FlagNoReturn;
@@ -494,9 +494,6 @@ impl<'ll, 'tcx> DebugInfoCodegenMethods<'tcx> for CodegenCx<'ll, 'tcx> {
         // LLVM LTO can't unify type definitions when a child DIE is a full subprogram definition.
         // When we use this `decl` below, the subprogram definition gets created at the CU level
         // with a DW_AT_specification pointing back to the type's declaration.
-        // FlagAllCallsDescribed cannot appear on the method declaration DIE
-        // because it has no body, which LLVM's verifier rejects.
-        let decl_flags = flags & !DIFlags::FlagAllCallsDescribed;
         let decl = is_method.then(|| unsafe {
             llvm::LLVMRustDIBuilderCreateMethod(
                 DIB(self),
@@ -508,7 +505,7 @@ impl<'ll, 'tcx> DebugInfoCodegenMethods<'tcx> for CodegenCx<'ll, 'tcx> {
                 file_metadata,
                 loc.line,
                 function_type_metadata,
-                decl_flags,
+                flags,
                 spflags & !DISPFlags::SPFlagDefinition,
                 template_parameters,
             )

filename: compiler/rustc_codegen_llvm/src/llvm/ffi.rs
patch: @@ -781,7 +781,6 @@ pub(crate) mod debuginfo {
             const FlagNonTrivial          = (1 << 26);
             const FlagBigEndian           = (1 << 27);
             const FlagLittleEndian        = (1 << 28);
-            const FlagAllCallsDescribed   = (1 << 29);
         }
     }
 

filename: compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
patch: @@ -779,7 +779,6 @@ ASSERT_DIFLAG_VALUE(FlagThunk, 1 << 25);
 ASSERT_DIFLAG_VALUE(FlagNonTrivial, 1 << 26);
 ASSERT_DIFLAG_VALUE(FlagBigEndian, 1 << 27);
 ASSERT_DIFLAG_VALUE(FlagLittleEndian, 1 << 28);
-static_assert(DINode::DIFlags::FlagAllCallsDescribed == (1 << 29));
 ASSERT_DIFLAG_VALUE(FlagIndirectVirtualBase, (1 << 2) | (1 << 5));
 #undef ASSERT_DIFLAG_VALUE
 
@@ -792,7 +791,7 @@ ASSERT_DIFLAG_VALUE(FlagIndirectVirtualBase, (1 << 2) | (1 << 5));
 // to copying each bit/subvalue.
 static DINode::DIFlags fromRust(LLVMDIFlags Flags) {
   // Check that all set bits are covered by the static assertions above.
-  const unsigned UNKNOWN_BITS = (1 << 31) | (1 << 30) | (1 << 21);
+  const unsigned UNKNOWN_BITS = (1 << 31) | (1 << 30) | (1 << 29) | (1 << 21);
   if (Flags & UNKNOWN_BITS) {
     report_fatal_error("bad LLVMDIFlags");
   }

filename: tests/codegen-llvm/debuginfo-callsite-flag.rs
patch: @@ -1,20 +0,0 @@
-// Check that DIFlagAllCallsDescribed is set on subprogram definitions.
-
-//@ ignore-msvc (CodeView does not use DIFlagAllCallsDescribed)
-//@ compile-flags: -C debuginfo=2 -C opt-level=1 -C no-prepopulate-passes
-
-// CHECK: {{.*}}DISubprogram{{.*}}name: "foo"{{.*}}DIFlagAllCallsDescribed{{.*}}
-
-#[no_mangle]
-#[inline(never)]
-pub fn foo(x: i32) -> i32 {
-    bar(x + 1)
-}
-
-#[no_mangle]
-#[inline(never)]
-pub fn bar(x: i32) -> i32 {
-    x * 2
-}
-
-fn main() {}