lebedev.ri marked 5 inline comments as done.
lebedev.ri added a comment.

@vsk so yeah, no wonder that doesn't work.
Somehow in that test case `ScalarExprEmitter::VisitExplicitCastExpr()` 
**never** gets called.
(I'm pretty sure this worked with the naive implementation, so worst case i'll 
just revert the 'stack' code)
Trying to assess the issue..



================
Comment at: lib/CodeGen/CGExprScalar.cpp:351
+    ScalarConversionOpts()
+        : TreatBooleanAsSigned(false),
+          EmitImplicitIntegerTruncationChecks(false) {}
----------------
lebedev.ri wrote:
> vsk wrote:
> > Why not use default member initializers here (e.g, "bool a = false")?
> I'll double-check, but i'm pretty sure then there were some warnings when i 
> did that,
> Or, the default needs to be defined in the actual declaration of 
> `EmitScalarConversion()`, i think.
```
[2/14 0.3/sec] Building CXX object 
tools/clang/lib/CodeGen/CMakeFiles/clangCodeGen.dir/CGExprScalar.cpp.o
FAILED: tools/clang/lib/CodeGen/CMakeFiles/clangCodeGen.dir/CGExprScalar.cpp.o 
/usr/bin/clang++-6.0  -DGTEST_HAS_RTTI=0 -D_DEBUG -D_GNU_SOURCE 
-D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS 
-Itools/clang/lib/CodeGen -I/build/clang/lib/CodeGen -I/build/clang/include 
-Itools/clang/include -I/usr/include/libxml2 -Iinclude -I/build/llvm/include 
-g0 -fPIC -fvisibility-inlines-hidden -Werror -Werror=date-time 
-Werror=unguarded-availability-new -std=c++11 -Wall -Wextra 
-Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers 
-pedantic -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor 
-Wdelete-non-virtual-dtor -Wstring-conversion -fdiagnostics-color 
-ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual 
-Wno-nested-anon-types -O3 -g0  -fPIC   -UNDEBUG  -fno-exceptions -fno-rtti -MD 
-MT tools/clang/lib/CodeGen/CMakeFiles/clangCodeGen.dir/CGExprScalar.cpp.o -MF 
tools/clang/lib/CodeGen/CMakeFiles/clangCodeGen.dir/CGExprScalar.cpp.o.d -o 
tools/clang/lib/CodeGen/CMakeFiles/clangCodeGen.dir/CGExprScalar.cpp.o -c 
/build/clang/lib/CodeGen/CGExprScalar.cpp
/build/clang/lib/CodeGen/CGExprScalar.cpp:355:52: error: default member 
initializer for 'TreatBooleanAsSigned' needed within definition of enclosing 
class 'ScalarExprEmitter' outside of member functions
                       ScalarConversionOpts Opts = ScalarConversionOpts());
                                                   ^
/build/clang/lib/CodeGen/CGExprScalar.cpp:349:10: note: default member 
initializer declared here
    bool TreatBooleanAsSigned = false;
         ^
/build/clang/lib/CodeGen/CGExprScalar.cpp:355:52: error: default member 
initializer for 'EmitImplicitIntegerTruncationChecks' needed within definition 
of enclosing class 'ScalarExprEmitter' outside of member functions
                       ScalarConversionOpts Opts = ScalarConversionOpts());
                                                   ^
/build/clang/lib/CodeGen/CGExprScalar.cpp:350:10: note: default member 
initializer declared here
    bool EmitImplicitIntegerTruncationChecks = false;
         ^
2 errors generated.
```



Repository:
  rC Clang

https://reviews.llvm.org/D48958



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to