Changeset 3638 in CLRX


Ignore:
Timestamp:
Jan 19, 2018, 1:31:16 PM (3 years ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmSource?: commenting code. Add new testcase ('.for' testing).

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/amdasm/AsmSource.cpp

    r3636 r3638  
    980980        if (asmFor->getNextExpr() != nullptr)
    981981        {
     982            // create next expression to evaluate
    982983            std::unique_ptr<AsmExpression> nextEvExpr(asmFor->getNextExpr()->
    983984                        createExprToEvaluate(assembler));
     
    986987            if (nextEvExpr != nullptr &&
    987988                nextEvExpr->evaluate(assembler, nextValue, nextSectionId))
     989                // set symbol if evaluated without errors
    988990                assembler.setSymbol(*(AsmSymbolEntry*)asmFor->getIterSymEntry(),
    989991                                    nextValue, nextSectionId);
     
    993995        if (good)
    994996        {
     997            // create conditional expression to evaluate
    995998            std::unique_ptr<AsmExpression> condEvExpr(asmFor->getCondExpr()->
    996999                        createExprToEvaluate(assembler));
    9971000            if (condEvExpr==nullptr || !condEvExpr->evaluate(assembler, value, sectionId))
     1001                // zeroing condition if evaluation failed
    9981002                value = 0;
    9991003            else if (sectionId != ASMSECT_ABS)
    10001004            {
     1005                // failed if no absolute value
    10011006                assembler.printError(asmFor->getCondExpr()->getSourcePos(),
    10021007                        "Value of conditional expression is not absolute");
    10031008                value = 0;
     1009                good = false;
    10041010            }
    10051011        }
  • CLRadeonExtender/trunk/tests/amdasm/AsmBasicsCases2.cpp

    r3635 r3638  
    21112111        }, false, "test.s:2:38: Error: Division by zero\n", ""
    21122112    },
     2113    /* 78 - '.for' - error: conditional is not absolute */
     2114    {
     2115        R"ffDXD(.gallium
     2116            .for  x = 1  ,  x + 16+.,  x+x
     2117                .int x
     2118            .endr
     2119)ffDXD",
     2120        BinaryFormat::GALLIUM, GPUDeviceType::CAPE_VERDE, false, { },
     2121        { { ".text", ASMKERN_GLOBAL, AsmSectionType::CODE,
     2122            {
     2123                0x01, 0x00, 0x00, 0x00
     2124            } } },
     2125        {
     2126            { ".", 4U, 0, 0U, true, false, false, 0, 0 },
     2127            { "x", 2U, ASMSECT_ABS, 0U, true, false, false, 0, 0 }
     2128        }, false,
     2129        "test.s:2:27: Error: Value of conditional expression is not absolute\n", ""
     2130    },
    21132131    { nullptr }
    21142132};
Note: See TracChangeset for help on using the changeset viewer.