Adjust error messages when regexp tests fail

[trivial and not reviewed]



git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@21865 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
Fix compile error with C++ regexp tests

[trivial and not reviewed]



git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@21866 3a8e244f-b0f2-452b-bcba-4c88e055c3ca
A bunch of code generation fixes enabling the LLVM backend

[Reviewed by Tom]

symbol.cpp:
  - Fix problem brought up on chapel-developers "communicating an extern const"
    in which the code generator is asked to generate code a 'put' for example
    using an extern const as the source address. That fails if the extern
    const is an enum, for example.

    The fix here is to code-generate extern consts as GEN_VAL, so that
    the address of them cannot be taken. If such a value is communicated,
    it will be copied to stack memory and then the stack value will be
    communicated. From discussion with Greg, I know that's currently
    not legit because we have some situations in which thread stacks are
    not in the communicable memory region. I plan to fix that in the future,
    by making even the initial task use an allocated stack. There are
    other places where the code generator probably does this...

  - Avoid generating definitions for extern local variables (which was
    happening in LLVM configurations).

expr.cpp:
  - minor LLVM bug fixes
  - moved insertion of a cast for LLVM from codegenAssign to
    codegenStoreLLVM
  - redo codegenLocaleForNode, which now calls chpl_buildLocaleID in order
    to generate a locale structure (or whatever it is) based on a node ID.
    That's needed for LLVM Wide Optimization because we need to form
    a wide pointer in order to implement put or get primitives.
  - updated codegenRnode to work again with LLVM, by using the
    codegenCallExpr to call chpl_nodeFromLocaleID instead of directly
    producing the C or LLVM code. In order to avoid adding new temporaries in
    that situation, I changed codegenWideStringField into
    codegenWideThingField; that is, it is now able to extract the
    fields from a wide cless, wide ref, or a wide string. Also modified
    this function to use a field number - and we have a table translating
    field number to C field name - so that the LLVM part is easy.

Future work:
  chpl_buildLocaleID and chpl_nodeFromLocaleID really should be marked
  with an inline hint in the generated code. They can't be inlined by the Chapel
  compiler because the code generator needs to call them!




git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@21867 3a8e244f-b0f2-452b-bcba-4c88e055c3ca