Do not lower malloc's to pass "sizeof" expressions like this:
authorChris Lattner <sabre@nondot.org>
Thu, 3 Mar 2005 01:04:50 +0000 (01:04 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 3 Mar 2005 01:04:50 +0000 (01:04 +0000)
  ltmp_0_7 = malloc(((unsigned )(&(((signed char (*)[784])/*NULL*/0)[1u]))));

Instead, just emit the literal constant, like this:

  ltmp_0_7 = malloc(784u);

This works around a bug in ICC 8.1 compiling the CBE generated code.  :-(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20415 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/CBackend/CBackend.cpp
lib/Target/CBackend/Writer.cpp

index dfd06a73e71fbed5094e5be20586ce3ddf55c902..8505917a44e1670cd87d24233a3d8076f018d20b 100644 (file)
@@ -1720,7 +1720,7 @@ void CWriter::visitVAArgInst(VAArgInst &I) {
 
 bool CTargetMachine::addPassesToEmitAssembly(PassManager &PM, std::ostream &o) {
   PM.add(createLowerGCPass());
-  PM.add(createLowerAllocationsPass());
+  PM.add(createLowerAllocationsPass(true));
   PM.add(createLowerInvokePass());
   PM.add(new CBackendNameAllUsedStructs());
   PM.add(new CWriter(o, getIntrinsicLowering()));
index dfd06a73e71fbed5094e5be20586ce3ddf55c902..8505917a44e1670cd87d24233a3d8076f018d20b 100644 (file)
@@ -1720,7 +1720,7 @@ void CWriter::visitVAArgInst(VAArgInst &I) {
 
 bool CTargetMachine::addPassesToEmitAssembly(PassManager &PM, std::ostream &o) {
   PM.add(createLowerGCPass());
-  PM.add(createLowerAllocationsPass());
+  PM.add(createLowerAllocationsPass(true));
   PM.add(createLowerInvokePass());
   PM.add(new CBackendNameAllUsedStructs());
   PM.add(new CWriter(o, getIntrinsicLowering()));