Index: clang/lib/CodeGen/CodeGenModule.cpp =================================================================== --- clang/lib/CodeGen/CodeGenModule.cpp +++ clang/lib/CodeGen/CodeGenModule.cpp @@ -964,7 +964,7 @@ void CodeGenModule::EmitBackendOptionsMetadata( const CodeGenOptions CodeGenOpts) { if (getTriple().isRISCV()) { - getModule().addModuleFlag(llvm::Module::Error, "SmallDataLimit", + getModule().addModuleFlag(llvm::Module::Min, "SmallDataLimit", CodeGenOpts.SmallDataLimit); } } Index: clang/test/CodeGen/RISCV/riscv-sdata-module-flag.c =================================================================== --- clang/test/CodeGen/RISCV/riscv-sdata-module-flag.c +++ clang/test/CodeGen/RISCV/riscv-sdata-module-flag.c @@ -1,3 +1,4 @@ +// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py // RUN: %clang -target riscv32-unknown-elf %s -S -emit-llvm -o - \ // RUN: | FileCheck %s -check-prefix=RV32-DEFAULT // RUN: %clang -target riscv32-unknown-elf %s -S -emit-llvm -G4 -o - \ @@ -28,20 +29,20 @@ void test(void) {} -// RV32-DEFAULT: !{i32 1, !"SmallDataLimit", i32 8} -// RV32-G4: !{i32 1, !"SmallDataLimit", i32 4} -// RV32-S0: !{i32 1, !"SmallDataLimit", i32 0} -// RV32-S2G4: !{i32 1, !"SmallDataLimit", i32 4} -// RV32-T16: !{i32 1, !"SmallDataLimit", i32 16} -// RV32-PIC: !{i32 1, !"SmallDataLimit", i32 0} +// RV32-DEFAULT: !{i32 8, !"SmallDataLimit", i32 8} +// RV32-G4: !{i32 8, !"SmallDataLimit", i32 4} +// RV32-S0: !{i32 8, !"SmallDataLimit", i32 0} +// RV32-S2G4: !{i32 8, !"SmallDataLimit", i32 4} +// RV32-T16: !{i32 8, !"SmallDataLimit", i32 16} +// RV32-PIC: !{i32 8, !"SmallDataLimit", i32 0} -// RV64-DEFAULT: !{i32 1, !"SmallDataLimit", i32 8} -// RV64-G4: !{i32 1, !"SmallDataLimit", i32 4} -// RV64-S0: !{i32 1, !"SmallDataLimit", i32 0} -// RV64-S2G4: !{i32 1, !"SmallDataLimit", i32 4} -// RV64-T16: !{i32 1, !"SmallDataLimit", i32 16} -// RV64-PIC: !{i32 1, !"SmallDataLimit", i32 0} -// RV64-LARGE: !{i32 1, !"SmallDataLimit", i32 0} +// RV64-DEFAULT: !{i32 8, !"SmallDataLimit", i32 8} +// RV64-G4: !{i32 8, !"SmallDataLimit", i32 4} +// RV64-S0: !{i32 8, !"SmallDataLimit", i32 0} +// RV64-S2G4: !{i32 8, !"SmallDataLimit", i32 4} +// RV64-T16: !{i32 8, !"SmallDataLimit", i32 16} +// RV64-PIC: !{i32 8, !"SmallDataLimit", i32 0} +// RV64-LARGE: !{i32 8, !"SmallDataLimit", i32 0} // The value will be passed by module flag instead of target feature. // RV32-S0-NOT: +small-data-limit=