- Notifications
You must be signed in to change notification settings - Fork 14k
Open
Labels
A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.C-enhancementCategory: An issue proposing an enhancement or a PR with one.Category: An issue proposing an enhancement or a PR with one.I-compiletimeIssue: Problems and improvements with respect to compile times.Issue: Problems and improvements with respect to compile times.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Description
Hi. I tried this code:
const COUNT : usize = 40000; fn main () { let mut vol_buffer = [ 0u64; COUNT ]; let mut input = unsafe { std::ptr::read_volatile(&mut vol_buffer) }; input[0] = 42; eprintln!("{:?}", input[0]); }Expected results:
Relatively quick compilation of a program that prints 42.
Actual results:
rustc took 45 seconds on my really rather fast laptop (and also uses a great deal of memory). The compiled binary works as epected.
Changing the value of COUNT shows the following (with an earlier rustc, but the newly-updated one is about as slow):
10000 1.74s
20000 5.9s
30000 20s
40000 46s
I haven't waited for completion of any larger values. In my original version I had COUNT = a million; I killed rustc after some minutes and about 2G of RAM use.
Meta
rustc --version --verbose:
binary: rustc commit-hash: 346aec9b02f3c74f3fce97fd6bda24709d220e49 commit-date: 2020-07-11 host: x86_64-unknown-linux-gnu release: 1.46.0-nightly LLVM version: 10.0 Metadata
Metadata
Assignees
Labels
A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.C-enhancementCategory: An issue proposing an enhancement or a PR with one.Category: An issue proposing an enhancement or a PR with one.I-compiletimeIssue: Problems and improvements with respect to compile times.Issue: Problems and improvements with respect to compile times.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.