[clang] fcf8827 - [Sema][RISCV][SVE] Allow ?: to select Typedef BuiltinType in C
Author: ShihPo Hung Date: 2021-06-04T15:33:14+08:00 New Revision: fcf8827a98beb1f8baea883451508d9cd91f57bc URL: https://github.com/llvm/llvm-project/commit/fcf8827a98beb1f8baea883451508d9cd91f57bc DIFF: https://github.com/llvm/llvm-project/commit/fcf8827a98beb1f8baea883451508d9cd91f57bc.diff LOG: [Sema][RISCV][SVE] Allow ?: to select Typedef BuiltinType in C This patch solves an error such as: incompatible operand types ('vbool4_t' (aka '__rvv_bool4_t') and '__rvv_bool4_t') when one of the value is a TypedefType of the other value in ?:. Reviewed By: rjmccall Differential Revision: https://reviews.llvm.org/D103603 Added: Modified: clang/lib/Sema/SemaExpr.cpp clang/test/Sema/riscv-types.c clang/test/Sema/sizeless-1.c Removed: diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index ba38b1089413f..422eddce86cd8 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -8393,7 +8393,7 @@ QualType Sema::CheckConditionalOperands(ExprResult &Cond, ExprResult &LHS, // Allow ?: operations in which both operands have the same // built-in sizeless type. - if (LHSTy->isSizelessBuiltinType() && LHSTy == RHSTy) + if (LHSTy->isSizelessBuiltinType() && Context.hasSameType(LHSTy, RHSTy)) return LHSTy; // Emit a better diagnostic if one of the expressions is a null pointer diff --git a/clang/test/Sema/riscv-types.c b/clang/test/Sema/riscv-types.c index f1bf2e6afecde..0d09546603b66 100644 --- a/clang/test/Sema/riscv-types.c +++ b/clang/test/Sema/riscv-types.c @@ -134,3 +134,12 @@ void bar(void) { // CHECK: __rvv_int8mf2_t x43; __rvv_int8mf2_t x43; } + +typedef __rvv_bool4_t vbool4_t; +__rvv_bool4_t get_rvv_bool4(); +vbool4_t get_vbool4_t(); + +void func1(int sel) { + // CHECK: vbool4_t t0 = sel ? get_rvv_bool4() : get_vbool4_t(); + vbool4_t t0 = sel ? get_rvv_bool4() : get_vbool4_t(); +} diff --git a/clang/test/Sema/sizeless-1.c b/clang/test/Sema/sizeless-1.c index e1d9265448947..a8c08731d53e6 100644 --- a/clang/test/Sema/sizeless-1.c +++ b/clang/test/Sema/sizeless-1.c @@ -57,6 +57,7 @@ void func(int sel) { static svint8_t static_int8; // expected-error {{non-local variable with sizeless type 'svint8_t'}} svint8_t local_int8; + int8_typedef typedef_int8; svint16_t local_int16; svint8_t __attribute__((aligned)) aligned_int8_1;// expected-error {{'aligned' attribute cannot be applied to sizeless type 'svint8_t'}} @@ -137,6 +138,7 @@ void func(int sel) { const_volatile_int8 = local_int8; // expected-error {{cannot assign to variable 'const_volatile_int8' with const-qualified type 'const volatile svint8_t'}} init_int8 = sel ? init_int8 : local_int8; + init_int8 = sel ? init_int8 : typedef_int8; init_int8 = sel ? init_int8 : const_int8; init_int8 = sel ? volatile_int8 : const_int8; init_int8 = sel ? volatile_int8 : const_volatile_int8; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] f1cbea3 - [RISCV] Remove Zvamo implication for v1.0-rc change
Author: ShihPo Hung Date: 2021-07-07T00:14:58+08:00 New Revision: f1cbea3e527547fc08c55235c11970a8d9f2637e URL: https://github.com/llvm/llvm-project/commit/f1cbea3e527547fc08c55235c11970a8d9f2637e DIFF: https://github.com/llvm/llvm-project/commit/f1cbea3e527547fc08c55235c11970a8d9f2637e.diff LOG: [RISCV] Remove Zvamo implication for v1.0-rc change As v1.0-rc specs say Zvamo is removed from standard extension, Zvamo has to be specified explicitly. Reviewed By: evandro Differential Revision: https://reviews.llvm.org/D105396 Added: Modified: clang/lib/Driver/ToolChains/Arch/RISCV.cpp clang/test/Preprocessor/riscv-target-features.c Removed: diff --git a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp index f131d5321070c..ade93d6881a7a 100644 --- a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp +++ b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp @@ -258,10 +258,13 @@ static void getExtensionFeatures(const Driver &D, << MArch << Error << Ext; return; } -if (Ext == "zvamo" || Ext == "zvlsseg") { +if (Ext == "zvlsseg") { + Features.push_back("+experimental-v"); + Features.push_back("+experimental-zvlsseg"); +} else if (Ext == "zvamo") { Features.push_back("+experimental-v"); - Features.push_back("+experimental-zvamo"); Features.push_back("+experimental-zvlsseg"); + Features.push_back("+experimental-zvamo"); } else if (isExperimentalExtension(Ext)) Features.push_back(Args.MakeArgString("+experimental-" + Ext)); else @@ -429,7 +432,6 @@ static bool getArchFeatures(const Driver &D, StringRef MArch, break; case 'v': Features.push_back("+experimental-v"); - Features.push_back("+experimental-zvamo"); Features.push_back("+experimental-zvlsseg"); break; } diff --git a/clang/test/Preprocessor/riscv-target-features.c b/clang/test/Preprocessor/riscv-target-features.c index da9b15b88a4c4..ea5754a83f1ea 100644 --- a/clang/test/Preprocessor/riscv-target-features.c +++ b/clang/test/Preprocessor/riscv-target-features.c @@ -225,12 +225,6 @@ // RUN: -march=rv64iv0p10 -x c -E -dM %s \ // RUN: -o - | FileCheck --check-prefix=CHECK-V-EXT %s // RUN: %clang -target riscv32-unknown-linux-gnu -menable-experimental-extensions \ -// RUN: -march=rv32izvamo0p10 -x c -E -dM %s \ -// RUN: -o - | FileCheck --check-prefix=CHECK-V-EXT %s -// RUN: %clang -target riscv64-unknown-linux-gnu -menable-experimental-extensions \ -// RUN: -march=rv32izvamo0p10 -x c -E -dM %s \ -// RUN: -o - | FileCheck --check-prefix=CHECK-V-EXT %s -// RUN: %clang -target riscv32-unknown-linux-gnu -menable-experimental-extensions \ // RUN: -march=rv32izvlsseg0p10 -x c -E -dM %s \ // RUN: -o - | FileCheck --check-prefix=CHECK-V-EXT %s // RUN: %clang -target riscv64-unknown-linux-gnu -menable-experimental-extensions \ @@ -238,9 +232,19 @@ // RUN: -o - | FileCheck --check-prefix=CHECK-V-EXT %s // CHECK-V-EXT: __riscv_v 1 // CHECK-V-EXT: __riscv_vector 1 -// CHECK-V-EXT: __riscv_zvamo 1 // CHECK-V-EXT: __riscv_zvlsseg 1 +// RUN: %clang -target riscv32-unknown-linux-gnu -menable-experimental-extensions \ +// RUN: -march=rv32izvamo0p10 -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-ZVAMO-EXT %s +// RUN: %clang -target riscv64-unknown-linux-gnu -menable-experimental-extensions \ +// RUN: -march=rv32izvamo0p10 -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-ZVAMO-EXT %s +// CHECK-ZVAMO-EXT: __riscv_v 1 +// CHECK-ZVAMO-EXT: __riscv_vector 1 +// CHECK-ZVAMO-EXT: __riscv_zvamo 1 +// CHECK-ZVAMO-EXT: __riscv_zvlsseg 1 + // RUN: %clang -target riscv32-unknown-linux-gnu -menable-experimental-extensions \ // RUN: -march=rv32izfh0p1 -x c -E -dM %s \ // RUN: -o - | FileCheck --check-prefix=CHECK-ZFH-EXT %s ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 27edaee - [RISCV][Driver] Make the ordering of CmdArgs consistent between RISCV::Linker and baremetal::Linker
Author: ShihPo Hung Date: 2021-04-18T19:05:20-07:00 New Revision: 27edaee84e3ea4d160f742db0b4a04e236c4e26e URL: https://github.com/llvm/llvm-project/commit/27edaee84e3ea4d160f742db0b4a04e236c4e26e DIFF: https://github.com/llvm/llvm-project/commit/27edaee84e3ea4d160f742db0b4a04e236c4e26e.diff LOG: [RISCV][Driver] Make the ordering of CmdArgs consistent between RISCV::Linker and baremetal::Linker In baremetal::Linker::ConstructJob, LinkerInput is handled prior to T_Group options, but on the other side in RISCV::Linker::ConstructJob, it is opposite. We want it to be consistent whether users are using RISCV::Linker or baremetal::Linker. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D100615 Added: clang/test/Driver/riscv-args.c Modified: clang/lib/Driver/ToolChains/RISCVToolchain.cpp Removed: diff --git a/clang/lib/Driver/ToolChains/RISCVToolchain.cpp b/clang/lib/Driver/ToolChains/RISCVToolchain.cpp index 9a29cc0985fc9..0b8c52096933d 100644 --- a/clang/lib/Driver/ToolChains/RISCVToolchain.cpp +++ b/clang/lib/Driver/ToolChains/RISCVToolchain.cpp @@ -181,14 +181,14 @@ void RISCV::Linker::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtbegin))); } + AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA); + Args.AddAllArgs(CmdArgs, options::OPT_L); ToolChain.AddFilePathLibArgs(Args, CmdArgs); Args.AddAllArgs(CmdArgs, {options::OPT_T_Group, options::OPT_e, options::OPT_s, options::OPT_t, options::OPT_Z_Flag, options::OPT_r}); - AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA); - // TODO: add C++ includes and libs if compiling C++. if (!Args.hasArg(options::OPT_nostdlib) && diff --git a/clang/test/Driver/riscv-args.c b/clang/test/Driver/riscv-args.c new file mode 100644 index 0..7b68df977f7c3 --- /dev/null +++ b/clang/test/Driver/riscv-args.c @@ -0,0 +1,7 @@ +// Check the arguments are correctly passed + +// Make sure -T is the last with gcc-toolchain option +// RUN: %clang -### -target riscv32 \ +// RUN: --gcc-toolchain= -Xlinker --defsym=FOO=10 -T a.lds %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-LD %s +// CHECK-LD: {{.*}} "--defsym=FOO=10" {{.*}} "-T" "a.lds" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits