[llvm-bugs] [Bug 52034] New: Module artifact file size grows exponentially with depth of imported modules and -Xclang -detailed-preprocessing-record

via llvm-bugs llvm-bugs at lists.llvm.org
Fri Oct 1 13:14:02 PDT 2021


https://bugs.llvm.org/show_bug.cgi?id=52034

            Bug ID: 52034
           Summary: Module artifact file size grows exponentially with
                    depth of imported modules and -Xclang
                    -detailed-preprocessing-record
           Product: clang
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Modules
          Assignee: unassignedclangbugs at nondot.org
          Reporter: thonerma at synopsys.com
                CC: dgregor at apple.com, llvm-bugs at lists.llvm.org,
                    richard-llvm at metafoo.co.uk

While working to reduce a Clang modules related test case, I happened to notice
that module artifact file size increased exponentially based on the depth of
the imported module DAG, even for importing modules that contain nothing other
than an import for a dependent module. This seems to occur for at least LLVM
Clang 9 -12 on Linux x86_64. The files are not created as sparse files, so
their size does not appear to be an artifact of intentional holes. This only
appears to happen when '-Xclang -detailed-preprocessing-record' is passed.

A test case follows.

$ cat t.cpp
#include <M20.h>

$ cat include/M20.h
#include <M19.h>
$ cat include/M19.h
#include <M18.h>
$ cat include/M18.h
#include <M17.h>
$ cat include/M17.h
#include <M16.h>
$ cat include/M16.h
#include <M15.h>
$ cat include/M15.h
#include <M14.h>
$ cat include/M14.h
#include <M13.h>
$ cat include/M13.h
#include <M12.h>
$ cat include/M12.h
#include <M11.h>
$ cat include/M11.h
#include <M10.h>
$ cat include/M10.h
#include <M09.h>
$ cat include/M09.h
#include <M08.h>
$ cat include/M08.h
#include <M07.h>
$ cat include/M07.h
#include <M06.h>
$ cat include/M06.h
#include <M05.h>
$ cat include/M05.h
#include <M04.h>
$ cat include/M04.h
#include <M03.h>
$ cat include/M03.h
#include <M02.h>
$ cat include/M02.h
#include <M01.h>
$ cat include/M01.h
#include <stdint.h>

$ cat include/module.modulemap
module M20 {
  header "M20.h"
  export *
}
module M19 {
  header "M19.h"
  export *
}
module M18 {
  header "M18.h"
  export *
}
module M17 {
  header "M17.h"
  export *
}
module M16 {
  header "M16.h"
  export *
}
module M15 {
  header "M15.h"
  export *
}
module M14 {
  header "M14.h"
  export *
}
module M13 {
  header "M13.h"
  export *
}
module M12 {
  header "M12.h"
  export *
}
module M11 {
  header "M11.h"
  export *
}
module M10 {
  header "M10.h"
  export *
}
module M09 {
  header "M09.h"
  export *
}
module M08 {
  header "M08.h"
  export *
}
module M07 {
  header "M07.h"
  export *
}
module M06 {
  header "M06.h"
  export *
}
module M05 {
  header "M05.h"
  export *
}
module M04 {
  header "M04.h"
  export *
}
module M03 {
  header "M03.h"
  export *
}
module M02 {
  header "M02.h"
  export *
}
module M01 {
  header "M01.h"
  export *
}

$ clang --version
clang version 12.0.1
Target: x86_64-unknown-linux-gnu
Thread model: posix

$ clang -Xclang -fmodules-cache-path=clang-module-cache -Xclang
-detailed-preprocessing-record -fmodules -Iinclude -c t.cpp

$ ls -l clang-module-cache/AK6XH28A43YE/
total 394356
-rw-r--r-- 1 thonerma sigeng    114300 Oct  1 15:54 M01-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng     52564 Oct  1 15:54 M02-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng     53520 Oct  1 15:54 M03-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng     55096 Oct  1 15:54 M04-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng     58200 Oct  1 15:54 M05-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng     64384 Oct  1 15:54 M06-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng     76708 Oct  1 15:54 M07-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng    101324 Oct  1 15:54 M08-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng    150512 Oct  1 15:54 M09-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng    248860 Oct  1 15:54 M10-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng    445500 Oct  1 15:54 M11-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng    838756 Oct  1 15:54 M12-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng   1625224 Oct  1 15:54 M13-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng   3198128 Oct  1 15:54 M14-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng   6343892 Oct  1 15:54 M15-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng  12635388 Oct  1 15:54 M16-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng  25218340 Oct  1 15:54 M17-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng  50384204 Oct  1 15:54 M18-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng 100715888 Oct  1 15:54 M19-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng 201379228 Oct  1 15:54 M20-26DRXPGEC18LR.pcm
-rw-r--r-- 1 thonerma sigeng     33072 Oct  1 15:54 modules.idx

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20211001/e7987268/attachment-0001.html>


More information about the llvm-bugs mailing list