benshi001 added inline comments.
================ Comment at: clang/lib/Driver/ToolChains/AVR.cpp:430 + // libgcc distributed with avr-gcc always named 'libgcc.a' even on windows. + return (Twine("libclang_rt.") + Component + Arch + ".a").str(); +} ---------------- This method decides the file name of compiler-rt, it is expected to be `libclang_rt.builtins-avrfamily.a`, such as `libclang_rt.builtins-avr51.a` `libclang_rt.builtins-avrtiny.a` `libclang_rt.builtins-avrxmega3.a` ================ Comment at: clang/lib/Driver/ToolChains/AVR.cpp:433 + +std::string AVRToolChain::getCompilerRTPath() const { + // Return default path appended with "/avr", if it exists. ---------------- This method decides the library path of compiler-rt, it is `$(RESOURCE_DIR)/lib/avr` or `$(RESOURCE_DIR)/lib/`. The resource dir is either explicitly specified via user option `-resource-dir` or has default value `$(LLVM_INSTALL_DIR)/lib/clang/$(LLVM_VERSION`. such as `/opt/avr-tool-chain/lib/clang/14.0.1/lib/avr` `/opt/avr-tool-chain/lib/clang/14.0.1/lib/` ================ Comment at: clang/lib/Driver/ToolChains/AVR.cpp:444 +ToolChain::RuntimeLibType AVRToolChain::GetDefaultRuntimeLibType() const { + return GCCInstallation.isValid() ? ToolChain::RLT_Libgcc + : ToolChain::RLT_CompilerRT; ---------------- Currently we still use libgcc if `--rtlib` option is not specified. ================ Comment at: clang/lib/Driver/ToolChains/AVR.cpp:482 + (RtLib == ToolChain::RLT_Libgcc || RtLib == ToolChain::RLT_CompilerRT) && + "unknown runtime library"); + ---------------- Currently we only allow `--rtlib=libgcc` and `--rtlib=compiler-rt` ================ Comment at: clang/lib/Driver/ToolChains/AVR.cpp:510 + if (RtLib == ToolChain::RLT_Libgcc) + CmdArgs.push_back(Args.MakeArgString("-L" + TC.getGCCInstallPath() + + "/" + SubPath)); ---------------- If `--rtlib` is not specified or specified to `libgcc`, then we generate `-L$PATH_TO_LIBGCC` ================ Comment at: clang/lib/Driver/ToolChains/AVR.cpp:542 + // Link to libgcc. + if (RtLib == ToolChain::RLT_Libgcc) + CmdArgs.push_back("-lgcc"); ---------------- If `--rtlib` is not specified or specified to `libgcc`, then we generate `-lgcc` ================ Comment at: clang/lib/Driver/ToolChains/AVR.cpp:555 + // Link to compiler-rt. + if (RtLib == ToolChain::RLT_CompilerRT) { + std::string RtLib = ---------------- If `--rtlib=compiler-rt` is explicitly specified, we directly put the `libclang.builtins-avrxxx.a` as input file, other than `-lclang.builtins-avrxxx`, this is a tradition from other platforms, such as x86 and arm. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D123612/new/ https://reviews.llvm.org/D123612 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits