Commit 0d4fc92b by Jim Stichnoth

eliminate code related to --no-ir-gen

BUG= R=stichnot@chromium.org Review URL: https://codereview.chromium.org/1522433004 .
parent 2a18dd3f
......@@ -16,7 +16,6 @@ if(PNACL_BROWSER_TRANSLATOR)
-DALLOW_LLVM_CL=0
-DALLOW_LLVM_IR=0
-DALLOW_LLVM_IR_AS_INPUT=0
-DALLOW_DISABLE_IR_GEN=0
-DALLOW_MINIMAL_BUILD=1
-DPNACL_BROWSER_TRANSLATOR=1
)
......@@ -26,7 +25,6 @@ else()
-DALLOW_LLVM_CL=1
-DALLOW_LLVM_IR=1
-DALLOW_LLVM_IR_AS_INPUT=1
-DALLOW_DISABLE_IR_GEN=1
-DALLOW_MINIMAL_BUILD=0
-DPNACL_BROWSER_TRANSLATOR=0
)
......
......@@ -21,11 +21,11 @@ CXX.Flags += -std=gnu++11
ifeq ($(PNACL_BROWSER_TRANSLATOR),1)
CPP.Defines += -DALLOW_DUMP=0 -DALLOW_LLVM_CL=0 -DALLOW_LLVM_IR=0 \
-DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_DISABLE_IR_GEN=0 \
-DALLOW_MINIMAL_BUILD=1 -DPNACL_BROWSER_TRANSLATOR=1
-DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_MINIMAL_BUILD=1 \
-DPNACL_BROWSER_TRANSLATOR=1
else
CPP.Defines += -DALLOW_DUMP=1 -DALLOW_LLVM_CL=1 -DALLOW_LLVM_IR=1 \
-DALLOW_LLVM_IR_AS_INPUT=1 -DALLOW_DISABLE_IR_GEN=1 \
-DALLOW_MINIMAL_BUILD=0 -DPNACL_BROWSER_TRANSLATOR=0
-DALLOW_LLVM_IR_AS_INPUT=1 -DALLOW_MINIMAL_BUILD=0 \
-DPNACL_BROWSER_TRANSLATOR=0
endif
......@@ -78,12 +78,10 @@ ifdef MINIMAL
NOASSERT = 1
OBJDIR := $(OBJDIR)+Min
BASE_CXX_DEFINES += -DALLOW_DUMP=0 -DALLOW_LLVM_CL=0 -DALLOW_LLVM_IR=0 \
-DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_DISABLE_IR_GEN=0 \
-DALLOW_MINIMAL_BUILD=1
-DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_MINIMAL_BUILD=1
else
BASE_CXX_DEFINES += -DALLOW_DUMP=1 -DALLOW_LLVM_CL=1 -DALLOW_LLVM_IR=1 \
-DALLOW_LLVM_IR_AS_INPUT=1 -DALLOW_DISABLE_IR_GEN=1 \
-DALLOW_MINIMAL_BUILD=0
-DALLOW_LLVM_IR_AS_INPUT=1 -DALLOW_MINIMAL_BUILD=0
endif
SB_CXX_DEFINES := $(BASE_CXX_DEFINES) -DPNACL_BROWSER_TRANSLATOR=1
......
......@@ -15,70 +15,66 @@
#define SUBZERO_SRC_ICEBUILDDEFS_H
namespace Ice {
/// \brief Defines constexpr functions that express various Subzero build
/// system defined values.
///
/// These resulting constexpr functions allow code to in effect be
/// conditionally compiled without having to do this using the older C++
/// preprocessor solution.
/** \verbatim
/// \brief Defines constexpr functions that express various Subzero build
/// system defined values.
///
/// These resulting constexpr functions allow code to in effect be
/// conditionally compiled without having to do this using the older C++
/// preprocessor solution.
For example whenever the value of FEATURE_SUPPORTED is needed, instead
of (except in these constexpr functions):
/** \verbatim
#if FEATURE_SUPPORTED ...
...
#endif
For example whenever the value of FEATURE_SUPPORTED is needed, instead
of (except in these constexpr functions):
We can have:
#if FEATURE_SUPPORTED ...
...
#endif
namespace Ice {
namespace BuildDefs {
We can have:
// Use this form when FEATURE_SUPPORTED is guaranteed to be defined on the
// C++ compiler command line as 0 or 1.
constexpr bool hasFeature() { return FEATURE_SUPPORTED; }
namespace Ice {
namespace BuildDefs {
or
// Use this form when FEATURE_SUPPORTED is guaranteed to be defined on the
// C++ compiler command line as 0 or 1.
constexpr bool hasFeature() { return FEATURE_SUPPORTED; }
// Use this form when FEATURE_SUPPORTED may not necessarily be defined on
// the C++ compiler command line.
constexpr bool hasFeature() {
#if FEATURE_SUPPORTED
return true;
#else // !FEATURE_SUPPORTED
return false;
#endif // !FEATURE_SUPPORTED
}
or
...} // end of namespace BuildDefs
} // end of namespace Ice
// Use this form when FEATURE_SUPPORTED may not necessarily be defined on
// the C++ compiler command line.
constexpr bool hasFeature() {
#if FEATURE_SUPPORTED
return true;
#else // !FEATURE_SUPPORTED
return false;
#endif // !FEATURE_SUPPORTED
}
...} // end of namespace BuildDefs
} // end of namespace Ice
And later in the code:
if (Ice::BuildDefs::hasFeature() {
...
}
And later in the code:
\endverbatim
if (Ice::BuildDefs::hasFeature() {
...
}
Since hasFeature() returns a constexpr, an optimizing compiler will know to
keep or discard the above fragment. In addition, the code will always be
looked at by the compiler which eliminates the problem with defines in that
if you don't build that variant, you don't even know if the code would
compile unless you build with that variant.
\endverbatim
**/
Since hasFeature() returns a constexpr, an optimizing compiler will know to
keep or discard the above fragment. In addition, the code will always be
looked at by the compiler which eliminates the problem with defines in that
if you don't build that variant, you don't even know if the code would
compile unless you build with that variant.
**/
namespace BuildDefs {
// The ALLOW_* etc. symbols must be #defined to zero or non-zero.
/// Return true if ALLOW_DISABLE_IR_GEN is defined as a non-zero value
constexpr bool disableIrGen() { return ALLOW_DISABLE_IR_GEN; }
/// Return true if ALLOW_DUMP is defined as a non-zero value
constexpr bool dump() { return ALLOW_DUMP; }
/// Return true if ALLOW_LLVM_CL is defined as a non-zero value
constexpr bool llvmCl() { return ALLOW_LLVM_CL; }
......
......@@ -82,9 +82,7 @@ cl::opt<bool> DisableHybridAssembly(
cl::opt<bool> DisableInternal("externalize",
cl::desc("Externalize all symbols"));
// Note: Modifiable only if ALLOW_DISABLE_IR_GEN.
cl::opt<bool> DisableIRGeneration("no-ir-gen",
cl::desc("Disable generating Subzero IR."));
cl::opt<bool> DisableTranslation("notranslate",
cl::desc("Disable Subzero translation"));
......@@ -390,7 +388,6 @@ void ClFlags::resetClFlags(ClFlags &OutFlags) {
OutFlags.DecorateAsm = false;
OutFlags.DisableHybridAssembly = false;
OutFlags.DisableInternal = false;
OutFlags.DisableIRGeneration = false;
OutFlags.DisableTranslation = false;
OutFlags.DumpStats = false;
OutFlags.EnableBlockProfile = false;
......@@ -434,9 +431,6 @@ void ClFlags::resetClFlags(ClFlags &OutFlags) {
}
void ClFlags::getParsedClFlags(ClFlags &OutFlags) {
if (::DisableIRGeneration)
::DisableTranslation = true;
Ice::VerboseMask VMask = Ice::IceV_None;
// Don't generate verbose messages if routines to dump messages are not
// available.
......@@ -457,7 +451,6 @@ void ClFlags::getParsedClFlags(ClFlags &OutFlags) {
OutFlags.setDisableHybridAssembly(::DisableHybridAssembly ||
(::OutFileType != Ice::FT_Iasm));
OutFlags.setDisableInternal(::DisableInternal);
OutFlags.setDisableIRGeneration(::DisableIRGeneration);
OutFlags.setDisableTranslation(::DisableTranslation);
OutFlags.setDumpStats(::DumpStats);
OutFlags.setEnableBlockProfile(::EnableBlockProfile);
......
......@@ -70,11 +70,6 @@ public:
bool getDisableInternal() const { return DisableInternal; }
void setDisableInternal(bool NewValue) { DisableInternal = NewValue; }
bool getDisableIRGeneration() const {
return BuildDefs::disableIrGen() && DisableIRGeneration;
}
void setDisableIRGeneration(bool NewValue) { DisableIRGeneration = NewValue; }
bool getDisableTranslation() const { return DisableTranslation; }
void setDisableTranslation(bool NewValue) { DisableTranslation = NewValue; }
......@@ -260,7 +255,6 @@ private:
bool DecorateAsm;
bool DisableHybridAssembly;
bool DisableInternal;
bool DisableIRGeneration;
bool DisableTranslation;
bool DumpStats;
bool EnableBlockProfile;
......
......@@ -47,7 +47,6 @@ struct {
int FlagValue;
} ConditionalBuildAttributes[] = {
{"dump", BuildDefs::dump()},
{"disable_ir_gen", BuildDefs::disableIrGen()},
{"llvm_cl", BuildDefs::llvmCl()},
{"llvm_ir", BuildDefs::llvmIr()},
{"llvm_ir_as_input", BuildDefs::llvmIrAsInput()},
......@@ -95,12 +94,6 @@ void Compiler::run(const Ice::ClFlagsExtra &ExtraFlags, GlobalContext &Ctx,
if (ExtraFlags.getGenerateBuildAtts())
return Ctx.getErrorStatus()->assign(EC_None);
if (!BuildDefs::disableIrGen() && Ctx.getFlags().getDisableIRGeneration()) {
Ctx.getStrError() << "Error: Build doesn't allow --no-ir-gen when not "
<< "ALLOW_DISABLE_IR_GEN!\n";
return Ctx.getErrorStatus()->assign(EC_Args);
}
// The Minimal build (specifically, when dump()/emit() are not implemented)
// allows only --filetype=obj. Check here to avoid cryptic error messages
// downstream.
......
......@@ -89,8 +89,6 @@ public:
: LLVM2ICEConverter(Converter), Func(nullptr) {}
void convertFunction(const Function *F) {
if (Ctx->isIRGenerationDisabled())
return;
Func = Ice::Cfg::create(Ctx, Converter.getNextSequenceNumber());
Ice::Cfg::setCurrentCfg(Func.get());
......
......@@ -222,10 +222,6 @@ public:
const ClFlags &getFlags() const { return Flags; }
bool isIRGenerationDisabled() const {
return getFlags().getDisableIRGeneration();
}
/// Allocate data of type T using the global allocator. We allow entities
/// allocated from this global allocator to be either trivially or
/// non-trivially destructible. We optimize the case when T is trivially
......
......@@ -166,8 +166,6 @@ public:
static ConstantPrimitive *create(GlobalContext *Ctx, Type Ty,
PrimType Value) {
assert(!Ctx->isIRGenerationDisabled() &&
"Attempt to build primitive constant when IR generation disabled");
return new (Ctx->allocate<ConstantPrimitive>())
ConstantPrimitive(Ty, Value);
}
......@@ -279,8 +277,6 @@ class ConstantRelocatable : public Constant {
public:
static ConstantRelocatable *create(GlobalContext *Ctx, Type Ty,
const RelocatableTuple &Tuple) {
assert(!Ctx->isIRGenerationDisabled() &&
"Attempt to build relocatable constant when IR generation disabled");
return new (Ctx->allocate<ConstantRelocatable>()) ConstantRelocatable(
Ty, Tuple.Offset, Tuple.Name, Tuple.SuppressMangling);
}
......@@ -320,8 +316,6 @@ class ConstantUndef : public Constant {
public:
static ConstantUndef *create(GlobalContext *Ctx, Type Ty) {
assert(!Ctx->isIRGenerationDisabled() &&
"Attempt to build undefined constant when IR generation disabled");
return new (Ctx->allocate<ConstantUndef>()) ConstantUndef(Ty);
}
......
......@@ -3,7 +3,7 @@
; REQUIRES: no_minimal_build
; RUN: not %pnacl_sz -bitcode-as-text %p/Inputs/bad-bb-size.tbc \
; RUN: -bitcode-format=pnacl -notranslate -no-ir-gen -build-on-read \
; RUN: -bitcode-format=pnacl -notranslate -build-on-read \
; RUN: -allow-externally-defined-symbols 2>&1 \
; RUN: | FileCheck %s
......
......@@ -5,7 +5,7 @@
; REQUIRES: no_minimal_build
; RUN: not %pnacl_sz -bitcode-as-text %p/Inputs/bad-global-alignment.tbc \
; RUN: -bitcode-format=pnacl -notranslate -no-ir-gen -build-on-read 2>&1 \
; RUN: -bitcode-format=pnacl -notranslate -build-on-read 2>&1 \
; RUN: | FileCheck %s
; CHECK: Global variable alignment greater than 2**29. Found: 2**30
......
......@@ -3,7 +3,7 @@
; REQUIRES: no_minimal_build
; RUN: not %pnacl_sz -bitcode-as-text %p/Inputs/bad-var-fwdref.tbc \
; RUN: -bitcode-format=pnacl -notranslate -no-ir-gen -build-on-read \
; RUN: -bitcode-format=pnacl -notranslate -build-on-read \
; RUN: -allow-externally-defined-symbols 2>&1 \
; RUN: | FileCheck %s
......
......@@ -3,7 +3,7 @@
; REQUIRES: no_minimal_build
; RUN: not %pnacl_sz -bitcode-as-text %p/Inputs/duplicate-fcn-name.tbc \
; RUN: -bitcode-format=pnacl -notranslate -no-ir-gen -build-on-read 2>&1 \
; RUN: -bitcode-format=pnacl -notranslate -build-on-read 2>&1 \
; RUN: | FileCheck %s
; CHECK: Module valuesymtab defines duplicate value name: 'f'
......
; Test if we can read alloca instructions.
; RUN: %p2i -i %s --insts | FileCheck %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing | \
; RUN: FileCheck --check-prefix=NOIR %s
; Show examples where size is defined by a constant.
......
......@@ -3,9 +3,7 @@
; RUN: %p2i -i %s --insts | FileCheck %s
; RUN: %l2i -i %s --insts | %ifl FileCheck %s
; RUN: %lc2i -i %s --insts | %iflc FileCheck %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing | \
; RUN: FileCheck --check-prefix=NOIR %s
; TODO(kschimpf): add i8/i16. Needs bitcasts.
......
; Tests if we handle a branch instructions.
; RUN: %p2i -i %s --insts | FileCheck %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing | \
; RUN: FileCheck --check-prefix=NOIR %s
define internal void @SimpleBranch() {
......
......@@ -2,10 +2,8 @@
; RUN: %p2i -i %s --insts --args -allow-externally-defined-symbols \
; RUN: | FileCheck %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: -allow-externally-defined-symbols \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing \
; RUN: -allow-externally-defined-symbols | \
; RUN: FileCheck --check-prefix=NOIR %s
define internal i32 @fib(i32 %n) {
......
; Tests if we can read cast operations.
; RUN: %p2i -i %s --insts --no-local-syms | FileCheck %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing | \
; RUN: FileCheck --check-prefix=NOIR %s
; TODO(kschimpf) Find way to test pointer conversions (since they in general
......
; Test if we can read compare instructions.
; RUN: %p2i -i %s --insts | FileCheck %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing | \
; RUN: FileCheck --check-prefix=NOIR %s
define internal i1 @IcmpI1(i32 %p1, i32 %p2) {
......
; Test handling of constants in function blocks.
; RUN: %p2i -i %s --insts | FileCheck %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing | \
; RUN: FileCheck --check-prefix=NOIR %s
define internal void @TestIntegers() {
......
......@@ -3,9 +3,7 @@
; RUN: %p2i -i %s --insts | FileCheck %s
; RUN: llvm-as < %s | pnacl-freeze | pnacl-bcdis -no-records \
; RUN: | FileCheck --check-prefix=DUMP %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing | \
; RUN: FileCheck --check-prefix=NOIR %s
define internal void @LoopCarriedDep() {
......
......@@ -6,10 +6,8 @@
; RUN: | %ifl FileCheck %s
; RUN: %lc2i -i %s --insts --args -allow-externally-defined-symbols \
; RUN: | %iflc FileCheck %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: -allow-externally-defined-symbols \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing \
; RUN: -allow-externally-defined-symbols | \
; RUN: FileCheck --check-prefix=NOIR %s
@PrimitiveInit = internal global [4 x i8] c"\1B\00\00\00", align 4
......
......@@ -3,9 +3,7 @@
; RUN: %p2i -i %s --insts | FileCheck %s
; RUN: %l2i -i %s --insts | %ifl FileCheck %s
; RUN: %lc2i -i %s --insts | %iflc FileCheck %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing | \
; RUN: FileCheck --check-prefix=NOIR %s
@bytes = internal global [7 x i8] c"abcdefg"
......
......@@ -3,9 +3,7 @@
; RUN: %p2i -i %s --insts | FileCheck %s
; RUN: %l2i -i %s --insts | %ifl FileCheck %s
; RUN: %lc2i -i %s --insts | %iflc FileCheck %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing | \
; RUN: FileCheck --check-prefix=NOIR %s
define internal void @ExtractV4xi1(<4 x i1> %v) {
......
; Test if we can read load instructions.
; RUN: %p2i --no-local-syms -i %s --insts | FileCheck %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing | \
; RUN: FileCheck --check-prefix=NOIR %s
define internal i32 @load_i8(i32 %addr) {
......
; Test parsing NaCl atomic instructions.
; RUN: %p2i -i %s --insts | FileCheck %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing | \
; RUN: FileCheck --check-prefix=NOIR %s
declare i8 @llvm.nacl.atomic.load.i8(i8*, i32)
......
......@@ -2,10 +2,8 @@
; RUN: %p2i -i %s --insts --args -allow-externally-defined-symbols \
; RUN: | FileCheck %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: -allow-externally-defined-symbols \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing \
; RUN: -allow-externally-defined-symbols | \
; RUN: FileCheck --check-prefix=NOIR %s
declare i8* @llvm.nacl.read.tp()
......
; Test reading phi instructions.
; RUN: %p2i -i %s --insts | FileCheck %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing | \
; RUN: FileCheck --check-prefix=NOIR %s
; TODO(kschimpf) Add forward reference examples.
......
; Tests if we can read select instructions.
; RUN: %p2i -i %s --insts | FileCheck %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing | \
; RUN: FileCheck --check-prefix=NOIR %s
define internal void @Seli1(i32 %p) {
......
; Test if we can read store instructions.
; RUN: %p2i -i %s --insts --no-local-syms | FileCheck %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing | \
; RUN: FileCheck --check-prefix=NOIR %s
define internal void @store_i8(i32 %addr) {
......
; Test switch instructions.
; RUN: %p2i -i %s --insts | FileCheck %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing | \
; RUN: FileCheck --check-prefix=NOIR %s
define internal void @testDefaultSwitch(i32 %a) {
......
......@@ -12,9 +12,7 @@
; RUN: -default-function-prefix=h -default-global-prefix=g \
; RUN: | FileCheck --check-prefix=BAD %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing | \
; RUN: FileCheck --check-prefix=NOIR %s
; TODO(kschimpf) Check global variable declarations, once generated.
......
; Test parsing unreachable instruction.
; RUN: %p2i -i %s --insts | FileCheck %s
; RUN: %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
; RUN: | %if --need=allow_disable_ir_gen --command \
; RUN: %p2i -i %s --args -notranslate -timing | \
; RUN: FileCheck --check-prefix=NOIR %s
define internal i32 @divide(i32 %num, i32 %den) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment