Index: llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Arch/RISCV.cpp =================================================================== --- llvm-toolchain-9_9.0.0.orig/clang/lib/Driver/ToolChains/Arch/RISCV.cpp +++ llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Arch/RISCV.cpp @@ -350,6 +350,13 @@ void riscv::getRISCVTargetFeatures(const // Handle all other types of extensions. getExtensionFeatures(D, Args, Features, MArch, OtherExts); + } else { + // Default to imafdc aka gc + Features.push_back("+m"); + Features.push_back("+a"); + Features.push_back("+f"); + Features.push_back("+d"); + Features.push_back("+c"); } // -mrelax is default, unless -mno-relax is specified. @@ -375,5 +382,5 @@ StringRef riscv::getRISCVABI(const ArgLi if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) return A->getValue(); - return Triple.getArch() == llvm::Triple::riscv32 ? "ilp32" : "lp64"; + return Triple.getArch() == llvm::Triple::riscv32 ? "ilp32" : "lp64d"; } Index: llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Clang.cpp =================================================================== --- llvm-toolchain-9_9.0.0.orig/clang/lib/Driver/ToolChains/Clang.cpp +++ llvm-toolchain-9_9.0.0/clang/lib/Driver/ToolChains/Clang.cpp @@ -1862,7 +1862,7 @@ void Clang::AddRISCVTargetArgs(const Arg else if (Triple.getArch() == llvm::Triple::riscv32) ABIName = "ilp32"; else if (Triple.getArch() == llvm::Triple::riscv64) - ABIName = "lp64"; + ABIName = "lp64d"; else llvm_unreachable("Unexpected triple!");