diff --git a/clang/include/clang/CIR/Dialect/IR/CIROps.td b/clang/include/clang/CIR/Dialect/IR/CIROps.td index 9c7e2b14ac5a..71dd03c88ea3 100644 --- a/clang/include/clang/CIR/Dialect/IR/CIROps.td +++ b/clang/include/clang/CIR/Dialect/IR/CIROps.td @@ -805,8 +805,8 @@ def TernaryOp : CIR_Op<"ternary", ``` }]; let arguments = (ins CIR_BoolType:$cond); - let regions = (region SizedRegion<1>:$trueRegion, - SizedRegion<1>:$falseRegion); + let regions = (region AnyRegion:$trueRegion, + AnyRegion:$falseRegion); let results = (outs Optional:$result); let skipDefaultBuilders = 1; diff --git a/clang/test/CIR/CodeGen/ternary.c b/clang/test/CIR/CodeGen/ternary.c new file mode 100644 index 000000000000..16c20460f102 --- /dev/null +++ b/clang/test/CIR/CodeGen/ternary.c @@ -0,0 +1,15 @@ +// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir -fno-clangir-call-conv-lowering %s -o %t.cir +// RUN: FileCheck --input-file=%t.cir %s --check-prefix=CIR + +#include + +double f1(int cond, int n, ...) { + va_list valist; + va_start(valist, n); + double res = cond ? va_arg(valist, double) : 0; + va_end(valist); + return res; +} + +// Fine enough to check it passes the verifying. +// CIR: cir.ternary