Do not allow memory bit select on the left side of an assignment
authorClifford Wolf <clifford@clifford.at>
Wed, 20 Nov 2013 11:18:46 +0000 (12:18 +0100)
committerClifford Wolf <clifford@clifford.at>
Wed, 20 Nov 2013 11:18:46 +0000 (12:18 +0100)
frontends/ast/simplify.cc

index 57178c81436d0aa5fdba0dd342b506b8a4db5cb3..6d662c8f7df2a20f79fbcee1aa5aada0397191f2 100644 (file)
@@ -473,7 +473,7 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage,
        // split memory access with bit select to individual statements
        if (type == AST_IDENTIFIER && children.size() == 2 && children[0]->type == AST_RANGE && children[1]->type == AST_RANGE)
        {
-               if (id2ast == NULL || id2ast->type != AST_MEMORY || children[0]->children.size() != 1)
+               if (id2ast == NULL || id2ast->type != AST_MEMORY || children[0]->children.size() != 1 || in_lvalue)
                        log_error("Invalid bit-select on memory access at %s:%d!\n", filename.c_str(), linenum);
 
                int mem_width, mem_size, addr_bits;