Hi Owen, nice transform!
> + // Check that we're copying to an argument...
> + Value* cpyDest = cpy->getDest();
> + if (!isa(cpyDest))
> +return false;
> +
> + // And that the argument is the return slot
> + Argument* sretArg = cast(cpyDest);
> + if (!sretArg->hasStructRetAttr())
> +
Hi Chris,
> >> Nice. Out of curiousity, how does nest do to codegen?
> >
> > 'nest' causes a specific register to be grabbed for the
> > parameter in calls. So removing it doesn't do much :)
>
> Ok.
if you want me to remove the transform, just ask :) I mostly did it
because seeing all those u
Author: baldrick
Date: Mon Feb 18 11:32:13 2008
New Revision: 47273
URL: http://llvm.org/viewvc/llvm-project?rev=47273&view=rev
Log:
Simplify caller updating using a CallSite, as
requested by Chris. While there, do the same
for an existing function committed by someone
called "lattner" :)
Modifi
> > if this means that ConvertUNION doesn't have to
> > muck around with fixing up padding elements anymore,
> > can you please remove that code.
>
> I don't know why that code is there (it goes back to the first svn
> checkin) but I don't think anything I did would make it unnecessary.
I guess
Author: baldrick
Date: Sun Feb 17 22:19:38 2008
New Revision: 47256
URL: http://llvm.org/viewvc/llvm-project?rev=47256&view=rev
Log:
Clarify that 'sret' only applies to pointers, and
only applies to the first parameter.
Modified:
llvm/trunk/docs/LangRef.html
Modified: llvm/trunk/docs/LangRef
Hi Owen,
> +bool Argument::hasStructRetAttr() const {
> + if (!isa(getType())) return false;
> + return getParent()->paramHasAttr(getArgNo()+1, ParamAttr::StructRet);
> +}
since the sret argument (if any) must be the first argument,
you could also do a quick return if the argument number is not
Hi Owen,
> - (isa(Object) && cast(Object)->hasByValAttr(
> {
> - // Okay, the pointer is to a stack allocated object. If we can prove
> that
> + (isa(Object) &&
> + (cast(Object)->hasByValAttr() ||
> +
>
Hi Chris,
> > Remove any 'nest' parameter attributes if the function
> > is not passed as an argument to a trampoline intrinsic.
>
> Nice. Out of curiousity, how does nest do to codegen?
'nest' causes a specific register to be grabbed for the
parameter in calls. So removing it doesn't do much
Author: baldrick
Date: Sat Feb 16 15:01:53 2008
New Revision: 47222
URL: http://llvm.org/viewvc/llvm-project?rev=47222&view=rev
Log:
Remove some code originally inspired by
expand_assignment in expr.c. I don't think
this is needed, and I suspect it's not needed
in expand_assignment either and is
Author: baldrick
Date: Sat Feb 16 14:59:48 2008
New Revision: 47221
URL: http://llvm.org/viewvc/llvm-project?rev=47221&view=rev
Log:
For a nested function, the parent's variables
are like global variables for a normal function.
In particular a 'const' nested function can
reasonably return the addr
Author: baldrick
Date: Sat Feb 16 14:56:04 2008
New Revision: 47220
URL: http://llvm.org/viewvc/llvm-project?rev=47220&view=rev
Log:
Remove any 'nest' parameter attributes if the function
is not passed as an argument to a trampoline intrinsic.
Added:
llvm/trunk/test/Transforms/GlobalOpt/2008-
Author: baldrick
Date: Sat Feb 16 14:53:06 2008
New Revision: 47219
URL: http://llvm.org/viewvc/llvm-project?rev=47219&view=rev
Log:
Some micro-optimizations.
Modified:
llvm/trunk/lib/VMCore/ParameterAttributes.cpp
Modified: llvm/trunk/lib/VMCore/ParameterAttributes.cpp
URL:
http://llvm.org
Author: baldrick
Date: Sat Feb 16 04:29:26 2008
New Revision: 47212
URL: http://llvm.org/viewvc/llvm-project?rev=47212&view=rev
Log:
Teach LegalizeTypes how to expand the operands of
br_cc. This fixes 5 "make check" failures.
Modified:
llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h
Author: baldrick
Date: Sat Feb 16 03:47:41 2008
New Revision: 47211
URL: http://llvm.org/viewvc/llvm-project?rev=47211&view=rev
Log:
Try to clarify which compilers can be used for the
build.
Modified:
llvm/trunk/docs/GCCFEBuildInstrs.html
Modified: llvm/trunk/docs/GCCFEBuildInstrs.html
URL:
Hi Andrew,
> +handling llvm.memory.barrier on pre SSE2 cpus
> +
> +should generate:
> +lock ; mov %esp, %esp
the linux kernel uses
lock; addl $0,0(%esp)
I don't know which is better (if any).
Ciao,
Duncan.
___
llvm-commits mailing list
llvm-commits@
Hi Dale,
> Put back fixed version of code to avoid copying
> padding within structs (sometimes).
if this means that ConvertUNION doesn't have to
muck around with fixing up padding elements anymore,
can you please remove that code.
Thanks!
Duncan.
___
On Thursday 14 February 2008 19:02:26 Dale Johannesen wrote:
>
> On Feb 14, 2008, at 6:52 AM, Duncan Sands wrote:
>
> > Hi Dale, this test is failing for me (x86-32 linux):
> > there is nothing called retval.
> >
> > // RUN: %llvmgxx -S -O0 -emit-llvm
Author: baldrick
Date: Fri Feb 15 13:42:13 2008
New Revision: 47173
URL: http://llvm.org/viewvc/llvm-project?rev=47173&view=rev
Log:
Fix this test on linux, which returns S242
using sret.
Modified:
llvm/trunk/test/C++Frontend/2008-02-13-sret.cpp
Modified: llvm/trunk/test/C++Frontend/2008-02-
Author: baldrick
Date: Fri Feb 15 13:34:17 2008
New Revision: 47172
URL: http://llvm.org/viewvc/llvm-project?rev=47172&view=rev
Log:
Teach LegalizeTypes how to promote the flags
in a ret node. These are created as i32 constants
but on some platforms i32 is not legal. This
fixes 26 "make check" f
> > Thanks Chris! Can you please also update the 2.2 release notes, and
> > where it says (about Ada and Fortran) "they need to be built from
> > source",
> > make that a link to GCCFEBuildIntrs.
>
> We typically don't change the 2.2 release notes after it ships. Do
> you mean the mainline r
> It is not safe to call fork in PrintStackTrace. Sometimes it freezes the
> program.
Is this in a signal handler? There are tight restrictions on what is allowed
in a signal handler, not just no forking :)
Ciao,
Duncan.
___
llvm-commits mailing list
> +# stack size: 100 MB should be enough for anybody. ;)
> +ULIMITCMD="$ULIMITCMD ulimit -s 10;"
What about over-all virtual memory (-v)?
D.
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llv
Hi Evan,
> > Finally, when doing libcalls, set isZExt on
> > a parameter if it is "unsigned". Currently
> > isSExt is set when signed, and nothing is
> > set otherwise. This should be right for all
> > calls to standard library routines.
>
> I am not sure I totally understand the reason for thi
> update the one reference to CFEBuildInstrs.html that I see.
Thanks Chris! Can you please also update the 2.2 release notes, and
where it says (about Ada and Fortran) "they need to be built from source",
make that a link to GCCFEBuildIntrs.
Ciao,
Duncan.
___
Author: baldrick
Date: Thu Feb 14 11:53:22 2008
New Revision: 47124
URL: http://llvm.org/viewvc/llvm-project?rev=47124&view=rev
Log:
Rename CFEBuildInstrs.html to GCCFEBuildInstrs.html.
Update all references to it and place a redirection
page at the old address.
Added:
llvm/trunk/docs/CFEBuil
Author: baldrick
Date: Thu Feb 14 11:28:50 2008
New Revision: 47122
URL: http://llvm.org/viewvc/llvm-project?rev=47122&view=rev
Log:
In TargetLowering::LowerCallTo, don't assert that
the return value is zero-extended if it isn't
sign-extended. It may also be any-extended.
Also, if a floating poin
Hi Dale, this test is failing for me (x86-32 linux):
there is nothing called retval.
// RUN: %llvmgxx -S -O0 -emit-llvm %s -o - | grep retval | grep S242 | grep
{i32 1} | count 2
Ciao,
Duncan.
; ModuleID = '2008-02-13-sret.cpp'
target datalayout =
"e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:
Hi Devang, nice idea.
> + // Emit intermediate .bc file before module level optimization passes
> are run. + if (emit_llvm_bc && flag_debug_llvm_module_opt) {
Why condition this on emit_llvm_bc?
> +static PassManager *IntermediatePM = new PassManager();
> +IntermediatePM->add(new Targe
Author: baldrick
Date: Wed Feb 13 12:01:53 2008
New Revision: 47075
URL: http://llvm.org/viewvc/llvm-project?rev=47075&view=rev
Log:
Teach LegalizeTypes how to expand and promote CTLZ,
CTTZ and CTPOP. The expansion code differs from
that in LegalizeDAG in that it chooses to take the
CTLZ/CTTZ cou
Author: baldrick
Date: Wed Feb 13 10:46:10 2008
New Revision: 47063
URL: http://llvm.org/viewvc/llvm-project?rev=47063&view=rev
Log:
Add notes on Ada compilers that can be used for
the build. Put all items that the user should
specify in bold. Make it a debug build.
Modified:
llvm/trunk/doc
> +// treat m-n as signed nor unsinged due to overflow possibility.
unsinged -> unsigned
Ciao,
D.
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
Author: baldrick
Date: Tue Feb 12 15:40:21 2008
New Revision: 47031
URL: http://llvm.org/viewvc/llvm-project?rev=47031&view=rev
Log:
Note that these instructions are for x86-32 linux
(the only platform on which the Ada compiler even
builds).
Modified:
llvm/trunk/docs/CFEBuildInstrs.html
Modi
Author: baldrick
Date: Tue Feb 12 15:28:39 2008
New Revision: 47028
URL: http://llvm.org/viewvc/llvm-project?rev=47028&view=rev
Log:
Add more spacing.
Modified:
llvm/trunk/docs/CFEBuildInstrs.html
Modified: llvm/trunk/docs/CFEBuildInstrs.html
URL:
http://llvm.org/viewvc/llvm-project/llvm/tr
Author: baldrick
Date: Tue Feb 12 15:22:58 2008
New Revision: 47027
URL: http://llvm.org/viewvc/llvm-project?rev=47027&view=rev
Log:
Add instructions for building Ada and Fortran.
Adjust mentions of gcc4 to be 4.0/4.2 agnostic.
This file should probably be renamed tor
GCCFEBuildInstrs.html...
Mo
Author: baldrick
Date: Tue Feb 12 14:46:31 2008
New Revision: 47024
URL: http://llvm.org/viewvc/llvm-project?rev=47024&view=rev
Log:
Generalize getCopyFromParts and getCopyToParts to
handle arbitrary precision integers and any number
of parts. For example, on a 32 bit machine an i50
corresponds t
Hi Dale,
> >> Treat struct { long long: 29; }; as int sized and
> >> aligned, rather than long long. ABI issue.
> >
> > if you look at the DECL_SIZE of the bitfield, rather than
> > the type size, I think it gives you 29. If so, DECL_SIZE
> > should simplify things for you. In fact as far as I
Author: baldrick
Date: Mon Feb 11 14:58:28 2008
New Revision: 46967
URL: http://llvm.org/viewvc/llvm-project?rev=46967&view=rev
Log:
Generalize the handling of call and return arguments,
in preparation for apint support. These changes are
intended to have no functional effect.
Modified:
llvm
Hi Dale,
> Treat struct { long long: 29; }; as int sized and
> aligned, rather than long long. ABI issue.
if you look at the DECL_SIZE of the bitfield, rather than
the type size, I think it gives you 29. If so, DECL_SIZE
should simplify things for you. In fact as far as I can
see you should ne
Author: baldrick
Date: Mon Feb 11 05:09:23 2008
New Revision: 46956
URL: http://llvm.org/viewvc/llvm-project?rev=46956&view=rev
Log:
Add arbitrary integer support to getRegisterType and
getNumRegisters. This is needed for calling functions
with apint parameters or return values.
Modified:
ll
Author: baldrick
Date: Mon Feb 11 04:37:04 2008
New Revision: 46954
URL: http://llvm.org/viewvc/llvm-project?rev=46954&view=rev
Log:
Add a isBigEndian method to complement isLittleEndian.
Modified:
llvm/trunk/include/llvm/Target/TargetLowering.h
llvm/trunk/lib/CodeGen/SelectionDAG/DAGComb
> > the current LLVM implementation means that anyone using threading
> > needs
> > to not do bitfield accesses, since the compiler generated code could
> > cause trouble.
>
> This is not handled by LLVM, this is handled by FE that is translating
> source code into LLVM IR. Unless all front-en
> maybe c380004 can be hyperlinked too?
There's not really much point: this is not an llvm-gcc problem.
I don't plan to open a PR for it, so there's nothing to link to.
Ciao,
Duncan.
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.c
> > you forgot about attributes on the function return value.
>
> I've lost the context for this, do you remember what this was about?
I fixed it for you already :)
D.
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mail
Author: baldrick
Date: Sun Feb 10 07:40:55 2008
New Revision: 46928
URL: http://llvm.org/viewvc/llvm-project?rev=46928&view=rev
Log:
Add some Ada info and correct a few buglets.
Modified:
llvm/trunk/docs/ReleaseNotes.html
Modified: llvm/trunk/docs/ReleaseNotes.html
URL:
http://llvm.org/view
Author: baldrick
Date: Sun Feb 10 04:08:52 2008
New Revision: 46926
URL: http://llvm.org/viewvc/llvm-project?rev=46926&view=rev
Log:
Add truncate and AssertZext result expansion.
Modified:
llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h
llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeType
Hi Devang,
> > I can't help feeling that a bitfield load or store should touch the
> > minimum amount of bytes possible: only those that contain some part
> > of the bitfield. In some situations touching other bytes could be
> > fatal, for example if the type is overlaid on some memory mapped io
Hi Dale,
> > It is possible that I'm not solving the real problem here.
> >
> > struct {
> > char a;
> > char b;
> > int c:8;
> > int d:20;
> > } S;
> >
> > When this struct is packed and S is aligned at 4 byte, what alignment
> > should be specified on load instruction to load 'd'
Hi Devang,
> It is possible that I'm not solving the real problem here.
>
> struct {
> char a;
> char b;
> int c:8;
> int d:20;
> } S;
>
> When this struct is packed and S is aligned at 4 byte, what alignment
> should be specified on load instruction to load 'd' ?
Hi Devang,
> Use appropriate alignment while handling packed struct member.
the reason I asked for a testcase is that I thought all objects
created by the IR we generate (whether locals, globals or on the
heap) were supposed to be aligned at least as much as the gcc
alignment. If so, the fact t
Hi Devang,
> Use appropriate alignment while handling packed struct member.
do you have a testcase for this?
Thanks,
Duncan.
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
On Monday 4 February 2008 22:50:23 Devang Patel wrote:
> Please update associated comments also.
Sorry about that - done now.
Ciao,
Duncan.
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
Author: baldrick
Date: Mon Feb 4 18:06:31 2008
New Revision: 46728
URL: http://llvm.org/viewvc/llvm-project?rev=46728&view=rev
Log:
Update comments.
Modified:
llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp
llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
Modified: llvm-gcc-4.2/trunk/gcc/llvm-backend.cp
Author: baldrick
Date: Mon Feb 4 12:07:02 2008
New Revision: 46713
URL: http://llvm.org/viewvc/llvm-project?rev=46713&view=rev
Log:
Crashes LegalizeTypes with "Do not know how to
expand the result of this operator!" (node: ctlz).
Added:
llvm/trunk/test/CodeGen/Generic/2008-02-04-Ctlz.ll
Add
Author: baldrick
Date: Mon Feb 4 12:05:42 2008
New Revision: 46712
URL: http://llvm.org/viewvc/llvm-project?rev=46712&view=rev
Log:
Crashes LegalizeTypes with "Do not know how to split
this operator's operand" (node: extract_subvector).
Added:
llvm/trunk/test/CodeGen/Generic/2008-02-04-Extra
Author: baldrick
Date: Mon Feb 4 11:21:32 2008
New Revision: 46710
URL: http://llvm.org/viewvc/llvm-project?rev=46710&view=rev
Log:
Fix PR1942, hopefully correctly. This is the same
as the previous fix except that a temporary buffer
is not used if CALL_EXPR_RETURN_SLOT_OPT is true.
This flag is
Author: baldrick
Date: Mon Feb 4 03:40:27 2008
New Revision: 46706
URL: http://llvm.org/viewvc/llvm-project?rev=46706&view=rev
Log:
Crashed the new type legalizer. Not likely to catch
any bugs in the future since to get the crash you also
need hacked in fake libcall support (which creates odd
bu
Author: baldrick
Date: Mon Feb 4 03:29:17 2008
New Revision: 46705
URL: http://llvm.org/viewvc/llvm-project?rev=46705&view=rev
Log:
I don't see how NodeUpdated can be called with a
ReadyToProcess node - add an assertion to check
this. Add an assertion to NodeDeleted that checks
that processed/re
Author: baldrick
Date: Sat Feb 2 14:54:52 2008
New Revision: 46671
URL: http://llvm.org/viewvc/llvm-project?rev=46671&view=rev
Log:
Revert the fixes for PR1942: gcc doesn't always
introduce the temporary (it's not yet clear how
it decides this), and introducing it for a C++
object with constructo
Author: baldrick
Date: Sat Feb 2 14:23:27 2008
New Revision: 46670
URL: http://llvm.org/viewvc/llvm-project?rev=46670&view=rev
Log:
Use alignment zero if the gcc alignment is less
than the ABI alignment, not just when it is equal
to it.
Modified:
llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp
l
Author: baldrick
Date: Fri Feb 1 14:37:16 2008
New Revision: 46645
URL: http://llvm.org/viewvc/llvm-project?rev=46645&view=rev
Log:
Don't drop function/call return attributes like 'nounwind'.
Added:
llvm/trunk/test/Transforms/ArgumentPromotion/2008-02-01-ReturnAttrs.ll
Modified:
llvm/tru
> >>> Hi Dale, maybe you could use IntrinsicInst::StripPointerCasts
> >>> instead?
> >>
> >> Didn't know about this, thanks. It recurses and I don't think that's
> >> what I want in this case. I did, however, steal its looping code:)
> >
> > Are you sure you don't want it to be recursive? I ca
> > Hi Dale, maybe you could use IntrinsicInst::StripPointerCasts instead?
>
> Didn't know about this, thanks. It recurses and I don't think that's
> what I want in this case. I did, however, steal its looping code:)
Are you sure you don't want it to be recursive? I can take a global
variabl
Hi Dale, maybe you could use IntrinsicInst::StripPointerCasts instead?
Best wishes,
Duncan.
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
Author: baldrick
Date: Tue Jan 29 13:29:08 2008
New Revision: 46525
URL: http://llvm.org/viewvc/llvm-project?rev=46525&view=rev
Log:
When expanding an operand, it's not the result value
type that matters but the operand type. This fixes
2008-01-08-IllegalCMP.ll which crashed with the new
legalize
Author: baldrick
Date: Tue Jan 29 00:46:44 2008
New Revision: 46498
URL: http://llvm.org/viewvc/llvm-project?rev=46498&view=rev
Log:
Test for PR1942.
Added:
test-suite/trunk/SingleSource/Regression/C++/2008-01-29-ParamAliasesReturn.cpp
Added:
test-suite/trunk/SingleSource/Regression/C++/20
Author: baldrick
Date: Tue Jan 29 00:23:44 2008
New Revision: 46495
URL: http://llvm.org/viewvc/llvm-project?rev=46495&view=rev
Log:
Use getPreferredAlignmentLog or getPreferredAlignment
to get the alignment of global variables, rather than
using hand-made versions.
Modified:
llvm/trunk/inclu
Author: baldrick
Date: Tue Jan 29 00:04:54 2008
New Revision: 46493
URL: http://llvm.org/viewvc/llvm-project?rev=46493&view=rev
Log:
This would be better done as an executable test.
Removed:
llvm/trunk/test/C++Frontend/2008-01-25-ResultIsParam.cpp
Removed: llvm/trunk/test/C++Frontend/2008-01
> This fails with 4.0 on darwin x86.
I've removed it. With recent changes needed for
byval correctness, it became too hard for the optimizers.
I've added it to PR452 instead.
Ciao,
Duncan.
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://
Author: baldrick
Date: Mon Jan 28 23:57:23 2008
New Revision: 46492
URL: http://llvm.org/viewvc/llvm-project?rev=46492&view=rev
Log:
After recent changes we fail to optimize this test
sufficiently to have it pass. I'm removing it from
the testsuite and adding it to PR452 instead.
Removed:
ll
> How long should we continue to support 4.0? I thought 2.2 was the
> last release for it?
Does 4.0 do anything better than 4.2? I'm all for dropping it like
a hot potato if not.
Ciao,
Duncan.
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
Author: baldrick
Date: Mon Jan 28 14:57:24 2008
New Revision: 46460
URL: http://llvm.org/viewvc/llvm-project?rev=46460&view=rev
Log:
Fix PR1942 differently, by having the caller
take care of making a copy of the aggregate
return value rather than the callee (the previous
fix). This is better adap
Hi Evan,
> > You should let QUAL_UNION through here as well. And what about size-
> > zero
> > arrays? Or for that matter, zero size anything?
>
> What exactly is QUAL_UNION? I am pretty sure other cases (especially
> zero sized arrays) are handled differently.
QUAL_UNION is a union with an
Hi Tanya,
> This test is failing for me. llvm-gcc-4.0, x86 darwin8.
it should be better now. It needed tweaking for a policy
change on byval+const/pure. Also, a patch had not been
backported from 4.2 to 4.0.
Ciao,
Duncan.
___
llvm-commits mailing li
Author: baldrick
Date: Mon Jan 28 13:57:01 2008
New Revision: 46457
URL: http://llvm.org/viewvc/llvm-project?rev=46457&view=rev
Log:
Backport the patch turning off readnone/readonly
when there is a byval parameter from 4.2.
Modified:
llvm-gcc-4.0/trunk/gcc/llvm-types.cpp
Modified: llvm-gcc-4
Hi Evan,
> > This is probably safe (not completely clear), but why do you need to
> > do it at all?
>
> Because they are skipped earlier when we did the type translation.
I see - this was orthogonal to the rest of your patch. I have a different
fix for this issue which I like better, but that
Author: baldrick
Date: Mon Jan 28 13:25:47 2008
New Revision: 46456
URL: http://llvm.org/viewvc/llvm-project?rev=46456&view=rev
Log:
Pure/const functions with ByVal parameters cannot
be marked readonly either.
Modified:
llvm/trunk/test/CFrontend/2008-01-25-ByValReadNone.c
Modified: llvm/trun
Hi Devang,
> >> +// Skip 'int:0', which just affects layout.
> >> +unsigned FieldSizeInBits =
> >> TREE_INT_CST_LOW(DECL_SIZE(Field));
> >> +if (FieldSizeInBits == 0)
> >> + continue;
> >
> > This is probably safe (not completely clear), but why do you need to
> > This breaks the build when the objects directory is different to the
> > source directory.
>
> I'm very sorry about this. The attached patch will fix it.
Indeed it does, so I've applied it. Thanks for the quick fix!
Best wishes,
Duncan.
___
llvm
Author: baldrick
Date: Mon Jan 28 11:38:30 2008
New Revision: 46453
URL: http://llvm.org/viewvc/llvm-project?rev=46453&view=rev
Log:
Unbreak builds with differing object and source
directories. Patch by Sam Bishop.
Modified:
llvm/trunk/Makefile.rules
Modified: llvm/trunk/Makefile.rules
URL:
> Author: lattner
> Date: Sun Jan 27 22:18:41 2008
> New Revision: 46432
>
> URL: http://llvm.org/viewvc/llvm-project?rev=46432&view=rev
> Log:
> reduce duplicate -I flags passed to the compiler, cleaning up the VERBOSE
> output. Patch contributed by Sam Bishop!
This breaks the build when the obj
Author: baldrick
Date: Mon Jan 28 04:35:11 2008
New Revision: 46451
URL: http://llvm.org/viewvc/llvm-project?rev=46451&view=rev
Log:
Make this more likely to be passed byval.
Modified:
llvm/trunk/test/CFrontend/2008-01-26-ReadOnlyByVal.c
Modified: llvm/trunk/test/CFrontend/2008-01-26-ReadOnl
Hi Evan, thanks for doing this.
> +static bool isZeroSizedStructOrUnion(tree type) {
> + if (TREE_CODE(type) != RECORD_TYPE && TREE_CODE(type) != UNION_TYPE)
You should let QUAL_UNION through here as well. And what about size-zero
arrays? Or for that matter, zero size anything?
> +//
Hi Evan,
> I did check in two test cases in a subsequent commit. Those used to
> choke llvm-gcc. I'll look at this today. It's obvious not all zero
> sized aggregates are not created equal.
I guess you mean this:
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20080121/057572.html
Author: baldrick
Date: Sun Jan 27 12:58:34 2008
New Revision: 46418
URL: http://llvm.org/viewvc/llvm-project?rev=46418&view=rev
Log:
Baldrick discovers "erase".
Modified:
llvm-gcc-4.2/trunk/gcc/llvm-types.cpp
Modified: llvm-gcc-4.2/trunk/gcc/llvm-types.cpp
URL:
http://llvm.org/viewvc/llvm-p
> How about:
>
> if (RAttrs == ParamAttr::None)
>Attrs.erase(Attrs.begin());
Now you see that I really don't know anything about std::vector :)
I will change it.
Ciao,
Duncan.
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.
Author: baldrick
Date: Sun Jan 27 12:12:58 2008
New Revision: 46416
URL: http://llvm.org/viewvc/llvm-project?rev=46416&view=rev
Log:
Revert r46393: readonly/readnone functions are no
longer allowed to write through byval arguments.
Modified:
llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp
Author: baldrick
Date: Sun Jan 27 12:11:13 2008
New Revision: 46415
URL: http://llvm.org/viewvc/llvm-project?rev=46415&view=rev
Log:
Do not mark a function readnone or readonly if it has
a byval parameter.
Modified:
llvm-gcc-4.2/trunk/gcc/llvm-types.cpp
Modified: llvm-gcc-4.2/trunk/gcc/llvm-
> I'm running into this problem as well -- it crashing while compiling
> gcov.c on my PPC G4.
While r46381 seems the obvious culprit, to tell the truth I didn't check
whether reverting this patch fixes the problem - so I could be wrong.
Ciao,
Duncan.
___
Hi Evan,
> Can you get me a test case? I need to see what gcc is doing. Thanks,
Sure. Zero sized fields in structs may not be very useful, but it is
still legal to use them, in particular you can take their address,
like this:
struct Z {};
struct Y {
int i;
struct Z z;
};
void
Author: baldrick
Date: Sat Jan 26 06:33:01 2008
New Revision: 46399
URL: http://llvm.org/viewvc/llvm-project?rev=46399&view=rev
Log:
Invert this test, because it is wrong if we allow
readonly functions to use byval parameters as local
storage (how much do we want this?).
Modified:
llvm/trunk/
> > Create an explicit copy for byval parameters even
> > when inlining a readonly function.
>
> Are you sure this is correct? There is a difference between 'const',
> 'pure' and readnone/readonly. Further, isn't it always safe to elide
> the copy for readnone functions?
A readnone function
> No problem, thanks for pointing out that it needed to be done. It
> would be nice if globalsmodref inferred that functions which only
> store to their byval args are really readnone.
I guess you mean readonly, since readnone+byval doesn't really work.
D.
___
Author: baldrick
Date: Sat Jan 26 00:41:49 2008
New Revision: 46393
URL: http://llvm.org/viewvc/llvm-project?rev=46393&view=rev
Log:
Create an explicit copy for byval parameters even
when inlining a readonly function.
Added:
llvm/trunk/test/CFrontend/2008-01-26-ReadOnlyByVal.c
Modified:
l
Hi Evan, dropping zero sized aggregates from types
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20080121/057570.html
broke the Ada build. A zero-sized aggregate is used in a COMPONENT_REF, so
llvm-convert barfs because it can't find the corresponding LLVM field. All gcc
fields shou
Author: baldrick
Date: Sat Jan 26 00:03:12 2008
New Revision: 46392
URL: http://llvm.org/viewvc/llvm-project?rev=46392&view=rev
Log:
Silence a warning.
Modified:
llvm-gcc-4.2/trunk/gcc/llvm-types.cpp
Modified: llvm-gcc-4.2/trunk/gcc/llvm-types.cpp
URL:
http://llvm.org/viewvc/llvm-project/ll
> If a function takes a byval parameter, it can't be readnone, we
> have to mark it readonly instead. This fixes
> test/CFrontend/2008-01-25-ByValReadNone.c
Thanks for doing this!
Duncan.
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://l
Author: baldrick
Date: Fri Jan 25 23:33:48 2008
New Revision: 46391
URL: http://llvm.org/viewvc/llvm-project?rev=46391&view=rev
Log:
Correct spelling.
Modified:
llvm-gcc-4.2/trunk/gcc/llvm-abi.h
Modified: llvm-gcc-4.2/trunk/gcc/llvm-abi.h
URL:
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.
Author: baldrick
Date: Fri Jan 25 23:27:18 2008
New Revision: 46390
URL: http://llvm.org/viewvc/llvm-project?rev=46390&view=rev
Log:
Correct comment.
Modified:
llvm-gcc-4.2/trunk/gcc/llvm-types.cpp
Modified: llvm-gcc-4.2/trunk/gcc/llvm-types.cpp
URL:
http://llvm.org/viewvc/llvm-project/llvm
Author: baldrick
Date: Fri Jan 25 16:06:51 2008
New Revision: 46369
URL: http://llvm.org/viewvc/llvm-project?rev=46369&view=rev
Log:
Do this more neatly.
Modified:
llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp
Modified: llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp
URL:
http://llv
Author: baldrick
Date: Fri Jan 25 11:45:31 2008
New Revision: 46359
URL: http://llvm.org/viewvc/llvm-project?rev=46359&view=rev
Log:
Fix PR1942. When returning an aggregate result,
create a temporary to hold the result, and copy
it out when returning.
Modified:
llvm-gcc-4.0/trunk/gcc/llvm-co
1 - 100 of 796 matches
Mail list logo